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

Visual C++ - Exclude file from Linker>Input>Additional Dependencies

我有一个包含多个 C++ 项目的 Visual Studio 解决方案,我发现管理链接器依赖项有点麻烦。

每次包含其他项目的头文件时,我都需要在链接器设置中显式添加相应的 .obj 文件。 IE。在属性>链接器>输入>附加依赖项中:

..\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

但不幸的是,这还包括来自 Project1Project2 的两个 main.obj 文件。

有没有办法从链接器输入中排除这些文件?

我尝试使用标准(?)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 方式对链接器说 "link everthing, except for this one"。

但是当然可以随时纠正我,这就是我来这里的原因。提前致谢。

p.s.: 我目前正在使用 VS2012,但我对任何 VS 版本的答案都很感兴趣,即使是旧版本(我不会为此降级,但我很感兴趣) .

VS2013:

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

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

添加->引用...

then selecting

添加新参考...

并选中复选框。

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

希望对您有所帮助,我通常不会在项目文件中手动引用目标文件。