我有一个项目,在编译之前通过在构建过程中使用脚本自动生成vcxproj文件。
此项目依赖于安装库,该库安装在构建计算机上的已知位置。
项目头文件声明:
#include "boost/foreach.hpp"
迫使我手动将boost
根文件夹的路径添加到vcxproj文件中的Additional Include Directories
字段。
由于项目文件是自动生成的,它迫使我将构建过程分成两个阶段,并在两个阶段之间编辑项目文件。
我还尝试更改源文件并在#include
语句中添加完整路径:
#include "<path to boost root>/boost/foreach.hpp"
但是一些boost
内部包含失败。这意味着我无法以这种方式进行。
我已阅读Set #include directory from C++ code file,发现无法从代码中添加路径。
由于我现在处于VS2012 / C ++ 11环境,我想知道VS2012 / C ++ 11中是否有任何变化?
是否仍然无法使用代码语句添加Include目录?
答案 0 :(得分:1)
你的意思是动态吗?不,没有办法。原因很简单:
当你运行你的程序时,它已经被编译,因此编译器必须知道在编译时要包含的所有文件。
您似乎正在使用CMake
。如果是这种情况,我建议您在CMake
文件中添加包含目录。
答案 1 :(得分:0)
首先,这样做:
#include "<path to boost root>/boost/foreach.hpp"
。通过这样做,您只能在您的环境中构建源代码 - 随着项目的增长,改变路径或其他开发人员构建它将是一场噩梦。并且,正如您所发现的那样,您将破坏链中更多的标题,这些标题使用相对路径。
生成项目的脚本是什么类型的?它是一个自定义的,还是一个众所周知的构建工具,如SCons或CMake?正确的解决方案是修复构建脚本,以便正确生成包含其他包含路径的项目。