如何在Visual Studio中自动添加依赖项目到包含路径

8
所以,我一直需要使用项目的“附加包含目录”属性来设置相对路径,以便为给定解决方案中我所依赖的其他(库)项目设置路径。
因此,解决方案结构实质上是:
My App.sln -> My App.vcxproj -> My Lib.vcxproj
我想要的是,只要My App依赖于My Lib,就自动将My App项目文件夹中的路径添加到其“附加包含目录”中。
我通过在My App下添加依赖项“References”来设置库/链接依赖关系,这意味着My App将自动链接到My Lib的输出.lib。完美!
但是……我不知道如何在不手动指定路径(或相对路径)的情况下将My Lib的.h文件包含到My App中。
我已经忍受了多年,但我必须解决一个依赖问题,找到了一个非常巧妙的方法,而不必触碰项目设置。
这让我想,肯定有一种方式可以做到“项目A依赖于项目B,因此应自动搜索项目B以获取#include引用”。
我是在一厢情愿的想法中吗?还是我错过了VS中的某些很棒的功能?

1
我使用类似的模式,但如果我不确定它是否是您所提出问题的答案,则会引入文件名冲突/歧义的风险。最好至少要求 #include <libname/something.h>,如果所有内容都具有相同的根级别,则可以很好地工作,然后在 libname 中包含头文件,在 src 文件夹中包含 cpp 文件。 - Kenny Ostrom
这是一种流行的方法。但我更喜欢它基于包含的模块(项目)- 因为有时候交换两个相似的项目很方便,不需要更新每个客户端 - 只需更改解决方案中的包含模块和依赖项。或者,无论如何,那就是我想要的! - Mordachai
我也在这里问同样的问题,但似乎纯VS不可能。你可以使用CMake。(文件/打开/CMake...) - Burak
1个回答

1

这可以通过属性管理器完成。以下是一篇详细描述此过程的文章: 使用属性文件在 Visual Studio C++ 项目中管理依赖项

简而言之,您需要为库项目创建一个自定义属性表,在其中添加其包含目录。(确保使用可从应用程序项目工作的路径) 然后您可以从应用程序项目中引用该属性表。

一旦设置好了,您可以对属性表进行修改,它将自动更新所有引用这些属性的项目。

您可以在“视图 -> 其他窗口”下找到属性管理器。


这是完整的设置。请注意左下角的MyLibIncludes属性表,还要注意MyLibIncludes被从MyApp引用: enter image description here

这是MyLibIncludes属性表的样子,其中包含了MyLib的包含文件夹: enter image description here

如果我们查看MyApp的属性,您会发现通过继承自MyAppMyLib的包含目录已经被自动添加了: enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接