有没有办法从C ++代码添加包含目录?

时间:2014-05-27 20:08:39

标签: c++ visual-studio-2012 c++11

我有一个项目,在编译之前通过在构建过程中使用脚本自动生成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目录?

2 个答案:

答案 0 :(得分:1)

你的意思是动态吗?不,没有办法。原因很简单:

当你运行你的程序时,它已经被编译,因此编译器必须知道在编译时要包含的所有文件。

您似乎正在使用CMake。如果是这种情况,我建议您在CMake文件中添加包含目录。

答案 1 :(得分:0)

首先,这样做:

#include "<path to boost root>/boost/foreach.hpp"

应该强烈劝阻

。通过这样做,您只能在您的环境中构建源代码 - 随着项目的增长,改变路径或其他开发人员构建它将是一场噩梦。并且,正如您所发现的那样,您将破坏链中更多的标题,这些标题使用相对路径。

生成项目的脚本是什么类型的?它是一个自定义的,还是一个众所周知的构建工具,如SCons或CMake?正确的解决方案是修复构建脚本,以便正确生成包含其他包含路径的项目。