截至VS2008,你设置你的本地C ++项目解决方案文件(Project Dependencies ...
)的依赖关系,而且如果(默认)的连接选项
Properties -> Linker -> General : Link Library Dependencies = Yes
设置,在Visual Studio版本将在所有项目(DLL文件,LIBS)的.lib
文件自动链接,这个项目是依赖将是“静态”的链接。
边注:微软改变了依赖于VS2010是如何工作的,现在你应该直接添加依赖到项目
Common Properties -> Framework and References : (List of depenencies)
(each lib/dll has a separate option:
Project Reference Properties -> Link Library Dependencies : True|False
我很好这一点。这不是这个问题是关于什么的。
(这里有一种解释:Flexible Project-to-Project References。)
它仍然是可能的。然而对解决方案的水平和General
连接选项定义项目的依赖也仍然存在。但是这是行不通的。看到:
当微软确认连接选项没有做什么世界人口的其余希望它做的,并增加了以下的解释:
感谢您报告此反馈。您所遇到的问题是由设计。 “链接库的依赖关系”是一个标志,只决定是否将库传递作为输入到链接。它不会自动查找依赖。作为客户,你将有你的建议手动定义depedency。
谁能解释这意味着什么,或者更重要的是:什么是“链接库相关”链接选项实际上是在Visual Studio 2010中吗?
什么是“输入到链接”实际上没有链接这个应该是一个?
你必须给的设置适当的值,以带来更为清晰:
2017年重新运行。好极了。
此选项设置每个项目的参考实际Link Library Dependecies
默认值(A)。如果每个项目引用有LinkLibraryDependecies
设置,那么它实际上是毫无意义的。
但是,添加一个新的参考,默认情况下(在VS2010和2015年)在<ProjectReference>
文件没有设置一套新vcxproj
元素时,那么这个选项是相关的,因为它提供了对所有新添加引用默认情况下,只要作为它们的值不会被修改。
(一):这的确应该是相同的所有配置(调试/发布)和平台的(Win32 / 64)或事情变得非常复杂。
Hans pointed out,它似乎在VS2010没有做任何事情如此。然而,这并不意味着,它实际上是不使用VS / MSBuild的。
关键是这个选项是如何插入vcxprj
文件,以及如何在默认设置中的MSBuild文件<ProjectReference>
设置工作。
如上述所示的链接器对话框的设置被插入为:
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
...
<ItemDefinitionGroup>
<ClCompile>
...
</ClCompile>
<Link>
...
</Link>
<ProjectReference>
<LinkLibraryDependencies>This option is not used by VS 2010!</LinkLibraryDependencies>
</ProjectReference>
...
</ItemDefinitionGroup>
</Project>
尽管这似乎与Link
选项以某种方式组合在一起,这只是有混淆你。
这是什么实际上做在一个给定vcxproj
文件(或从.props
file到来时),是设置在VS2010 VC设置对话框中的Link Library Dependencies
部分每个项目依赖性Frameworks and References
值的默认值 -
- 或者在VS2015引用的树 -
这是相关的,因为当你添加一个新的项目引用,在vcxproj
文件中的默认项将是这样的:
...
<ItemGroup>
<ProjectReference Include="..\W32DynLib1\W32DynLib1.vcxproj">
<Project>{96be134d-acb5-....-....-....bb6fe4a7}</Project>
</ProjectReference>
</ItemGroup>
你会发现,<LinkLibraryDependecies>true|false</..>
子元素在这里失去了:这意味着你的“全球”的设置将被实际用来设置默认值。
如果您的全局设置为false
(或No
),项目引用不会在任何链接。如果是true
,它将链接英寸
更重要的是:
LinkLibraryDependency
,是完全从您的设置丢失,则默认为真(从MSBuild的文件夹中的Microsoft.Cpp[.Common].props
file)。This is not used
,这将被解释为真。False is the new truth!
,也许在此设置No way
,它也将构建解释为真。false
,即使建设项目时,这则解释为真。什么是更:
这似乎与vcproj
文件转换旧的解决方案时,该转换器将在sln
和vcproj
项目的链接器选项的值中指定的,和实际设置LinkLibraryDependency
每个ProjectReference
其插入到新vcxproj
旧的依赖 - 这就是一个原因,我认为这是这么久死的选项 - 大部分我们的项目有一个转换的历史可以追溯到VS2005。
这里的东西是你必须去,项目属性 - >通用属性 - >框架和引用,然后到你的项目中添加新的参考。那么只有它会在VS 2010中工作,不喜欢在VS的早期版本
这已在Properties / Common / Frameworks and References
要设置
另外,您可以添加一些像你vcxproj文件下面的东西,当然使用你所引用的实际项目,该项目的UUID。
<ItemGroup>
<ProjectReference Include="..\Cpp\Cpp.vcxproj">
<Project>{c58574bf-9dd8-4cf8-b5b6-6551f2f3eece}</Project>
</ProjectReference>
</ItemGroup>
好像你也必须设置
<IgnoreImportLibrary>false</IgnoreImportLibrary>
在引用的项目。