我在处理一个使用boost库的代码库。但是,最近在新用户的电脑上构建基础时遇到了问题。我能够将问题简化为以下内容。构建系统如下:
/root
/SubModules_with_Makefiles_and_Code
/thirdparty/boost
子模块代码将像这样引用boost库(例如):
#include <boost/property_tree/ptree.hpp>
而子模块的构建文件将会生成这样一段代码(例如):
g++ -c -o code.o code.cpp -I/root/thirdparty/boost
我们的第三方boost库版本为1.37。然而,一些模块已经开始使用更新的boost版本。这个问题被掩盖了,因为这些模块所在的机器上安装了位于/usr/include/boost的boost 1.41。
这个问题变得明显是因为新用户的机器上没有在/usr/include中安装boost 1.41。理想情况下,我希望g++只在第三方目录中查找boost,而不去其他地方寻找。这样,我们可以更好地控制代码构建的方式。
-I
除了替换,是否有任何聪明的方法来解决这个问题?
#include <boost/something.hpp>
to
#include <thirdparty/boost/something.hpp>
如果有帮助的话,我正在使用Redhat Linux上的GNU make 3.81和g++ 4.4.5。