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
但不幸的是,这还包括来自 Project1
和 Project2
的两个 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
添加新参考...
并选中复选框。
然后您可以根据需要将代码分解为不同的静态库和动态库。
希望对您有所帮助,我通常不会在项目文件中手动引用目标文件。
我有一个包含多个 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
但不幸的是,这还包括来自 Project1
和 Project2
的两个 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
添加新参考...
并选中复选框。
然后您可以根据需要将代码分解为不同的静态库和动态库。
希望对您有所帮助,我通常不会在项目文件中手动引用目标文件。