自动将"Additional include directory"添加到静态库的用户

automatic add "Additional include directory" to user of a static library

本文关键字:静态 添加 用户 directory Additional include      更新时间:2023-10-16

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

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

从上图中,MyLib需要一个不是由我编码的外部库。
外部标头驻留在D:external中。

工作配置(传统)

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

  1. MyLib附加包含目录=D:external;

  2. MyGame附加包含目录=D:MySolMyLib;D:external;

请注意,我必须将"其他包含目录=D:external;"添加到这两个项目中。

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

属性表可以稍微缓解问题,但不能完全解决问题。

梦幻配置

我希望我能尽快包括:-

  1. MyGame附加包含目录=D:MySolMyLib;<-- 没有"外部"是的!

这无法编译,因为项目MyGame无法访问external中的标头。 (废话,为什么不自动化?

MyLib添加到MyGame引用(解决方案资源管理器)中无济于事。

问题

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

相关问题

  • 可以对链接器做这样的事情,但我找不到有关其他包含目录的任何设置。
  • 这是一个相关的问题,但它主要问"为什么",所有解决方案都建议我必须手动完成。 (真的吗?

正如您现在发现的那样,属性表通常是使此类内容部分自动化的简单方法(另一种方法是例如像 VcPkg 这样的包管理,但据我所知,这(尚未)正确建立,并且不像创建单个文件并通过几次单击将其添加到项目中那么容易)。 在这种情况下:创建一个属性表,将 d:\external 添加到AdditionalIncludeDirectories,并将该表导入到所有需要它的项目中。此外,如果您不使用杂注进行自动链接和/或库不是所有项目都知道的公共位置,则可以将库搜索路径和库本身添加到属性表中的链接器输入中,以使编译器和链接器都满意。