我有一个应用程序项目(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
添加到MyGame
的Reference(Solution Explorer)并没有帮助。题
如何使静态库项目(
MyGame
)的用户自动吸收静态库项目(\external
)的其他包含目录(MyLib
)?相关问题
It is possible to do such thing about linker,但找不到关于“附加包含目录”的任何设置。
This是一个相关的问题,但主要询问“为什么”,所有解决方案都建议我必须手动执行。 (真?)
最佳答案
正如您现在所发现的,属性表通常是使诸如此类的东西部分自动化的简单方法(另一种方法是例如VcPkg之类的软件包管理,但据我所知(目前)还没有正确建立,只需单击几下即可轻松创建单个文件并将其添加到项目中)。
在这种情况下:创建一个属性表,将d:\ external添加到AdditionalIncludeDirectories
并将其导入所有需要它的项目中。同样,如果您不使用编译指示进行自动链接和/或所有项目都未在所有已知的公共位置中找到库,则可以将库搜索路径和库本身添加到属性表中的链接器输入中,以获取编译器和链接器高兴。