我有一个应用程序项目(MyGame)在同一解决方案中使用/调用我的静态库(MyLib):-

MySol\
- MyLib (static library)   use "external"
- MyGame (win32 app)       use "MyLib"


从上图中,MyLib需要一个未由我编写的外部库。
  外部头位于D:\external\中。

工作配置(传统)

这是使一切正常的正确设置:-


MyLib的附加包含目录= D:\external\;
MyGame的附加包含目录= D:\MySol\MyLib\;D:\external\;


请注意,我必须在两个项目中都添加其他包含目录= D:\external\;

当我有很多项目时,这在现实生活中是一团糟。
(乏味,难以维护,容易出错且肮脏)

Property sheet可以稍微缓解问题,但不能完全治愈。

梦想配置

我希望我可以在短时间内加入:-


MyGame的其他包含目录= D:\MySol\MyLib\;

由于项目MyGame无法访问\external中的标头,因此无法进行编译。 (废话,为什么不自动化?)

MyLib添加到MyGameReference(Solution Explorer)并没有帮助。



如何使静态库项目(MyGame)的用户自动吸收静态库项目(\external)的其他包含目录(MyLib)?

相关问题


It is possible to do such thing about linker,但找不到关于“附加包含目录”的任何设置。
This是一个相关的问题,但主要询问“为什么”,所有解决方案都建议我必须手动执行。 (真?)

最佳答案

正如您现在所发现的,属性表通常是使诸如此类的东西部分自动化的简单方法(另一种方法是例如VcPkg之类的软件包管理,但据我所知(目前)还没有正确建立,只需单击几下即可轻松创建单个文件并将其添加到项目中)。
在这种情况下:创建一个属性表,将d:\ external添加到AdditionalIncludeDirectories并将其导入所有需要它的项目中。同样,如果您不使用编译指示进行自动链接和/或所有项目都未在所有已知的公共位置中找到库,则可以将库搜索路径和库本身添加到属性表中的链接器输入中,以获取编译器和链接器高兴。

07-28 01:02