自动添加"附加包含目录"对静态库的用户

时间:2017-03-29 08:30:05

标签: c++ visual-studio-2015

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

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

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

工作配置(传统)

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

  1. MyLib' 其他包含目录 = D:\external\;

  2. MyGame' 其他包含目录 = D:\MySol\MyLib\;D:\external\;

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

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

    Property sheet可以缓解这个问题,但不能彻底治愈。

    梦想配置

    我希望我能尽快将其包括在内: -

    1. MyGame' 其他包含目录 = D:\MySol\MyLib\;< - no" external"啊!
    2. 由于项目MyGame无法访问\external中的标题,因此无法对其进行编译。 (无意义,为什么不自动化?)

      MyLib添加到MyGame' Reference(解决方案资源管理器)并没有帮助。

      问题

      如何自动吸收 其他包含目录 ({{ 1)})静态库项目(MyGame)?

      相关问题

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

1 个答案:

答案 0 :(得分:1)

正如你现在发现的那样,属性表通常是让这样的事情部分自动化的简单方法(另一种方式是像VcPkg这样的包管理,但就我而言尚未正确建立知道,并不像创建单个文件那样简单,只需点击几下就可以将其添加到项目中。 在这种情况下:创建一个属性表,将d:\ external添加到AdditionalIncludeDirectories并在需要它的所有项目中导入工作表。此外,如果您不使用pragma进行自动链接和/或库不在所有项目已知的公共位置,您可以将库搜索路径和库本身添加到属性表中的链接器输入以获取编译器和链接器快乐。