Visual C ++ - 从链接器中排除文件>输入>附加依赖项

时间:2017-07-22 14:37:36

标签: c++ visual-studio visual-studio-2012 linker visual-studio-2017

我有一个包含多个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.objProject1的两个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版本的答案都很感兴趣,即使对于旧版本也是如此(我不会为此降级,但我感兴趣)。

1 个答案:

答案 0 :(得分:1)

<强> VS2013

我相信这通常是通过添加对构建为StaticLibrary或DynamicLibrary的其他项目的引用来实现的。

This is done by right clicking on the parent project in the Solution Explorer and navigating to Here

<强>添加 - &GT;引用...

then selecting

添加新参考资料......

并选中复选框。

然后,您可以根据需要将代码分解为不同的静态和动态库。

我希望这有帮助,我通常不会手动引用项目文件中的目标文件。