【发布时间】:2014-05-27 20:08:38
【问题描述】:
我有一个项目,它的 vcxproj 文件是在编译之前通过在构建过程中使用脚本自动生成的。
此项目依赖于安装在构建机器上已知位置的 boost 库。
项目头文件声明:
#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目录还是不行吗?
【问题讨论】:
-
也许使用某种#pragma 是可能的,但我对此表示怀疑。为什么不改生成vcxproj文件,添加include目录呢?
-
#include "<path to boost root>"通常在编译器选项中添加/I <path to boost root>。 -
@πάνταῥεῖ - 我使用
devenv mySolution.sln Release /rebuild命令行 - 我应该简单地添加/I <path to boost root>吗? -
如果你是通过一些脚本或其他工具自动生成
vcxproj,为什么不能在生成时添加路径到Boost? -
@NirMH 不,我认为您不能将编译器开关传递给
devenv。获取构建脚本以生成具有正确设置的 vcxproj。另一种选择是让构建机器设置一个环境变量,比如BOOST_ROOT,它指向boost 安装目录。您可以在 vcxproj 中将其引用为$(BOOST_ROOT)
标签: c++ visual-studio-2012 c++11