我有一个包含多个C ++项目的Visual Studio解决方案,我发现管理链接器依赖项有点麻烦。
每次我包含来自其他项目的头文件时,我都需要在链接器设置中显式添加相应的.obj
文件。
即在属性>链接器>输入>附加依赖项:
..\Project1\$(Platform)\$(Configuration)\Obj1.obj
..\Project1\$(Platform)\$(Configuration)\Obj2.obj
..\Project2\$(Platform)\$(Configuration)\Obj3.obj
..\Project2\$(Platform)\$(Configuration)\Obj4.obj
使用通配符可以大大简化此任务:
..\Project1\$(Platform)\$(Configuration)\*.obj
..\Project2\$(Platform)\$(Configuration)\*.obj
但不幸的是,这还包括来自main.obj
和Project1
的两个Project2
文件。
有没有办法从链接器输入中排除这些文件?
我尝试使用标准(?)Windows文件搜索选项,如下所示:
"..\Project1\$(Platform)\$(Configuration)\*.obj"-"..\Project1\$(Platform)\$(Configuration)\main.obj"
"..\Project2\$(Platform)\$(Configuration)\*.obj"-"..\Project2\$(Platform)\$(Configuration)\main.obj"
但显然他们在这里不受支持。实际上,似乎只是在有效的链接器路径周围添加引号会破坏所有内容。
我也看过this question,当然,我可以做这样的事情,通过自定义脚本重命名或删除不需要的文件,但我更愿意避免使用它。我想做的事似乎是一件相当合理的事情;每个项目都有自己的main.obj
对我有意义,连接一些但不是全部.obj
对我来说也是有意义的。必须有一些标准的VS方式说"链接everthing,除了这个"到链接器。
但是当然可以随意纠正我,这就是我在这里的原因。提前谢谢。
ps:我目前正在使用VS2012,但我对任何VS版本的答案都很感兴趣,即使对于旧版本也是如此(我不会为此降级,但我感兴趣)。答案 0 :(得分:1)
<强> VS2013 强>:
我相信这通常是通过添加对构建为StaticLibrary或DynamicLibrary的其他项目的引用来实现的。
This is done by right clicking on the parent project in the Solution Explorer and navigating to Here
<强>添加 - &GT;引用... 强>
添加新参考资料......
并选中复选框。
然后,您可以根据需要将代码分解为不同的静态和动态库。
我希望这有帮助,我通常不会手动引用项目文件中的目标文件。