Я работаю над базой кода, которая использует библиотеки boost. Но у меня недавно возникли проблемы с созданием базы на машине нового пользователя. Я смог решить проблему следующим образом. Вот как система сборки выглядит следующим образом:Задание включить путь для повышения в одном месте только в g ++
/root
/SubModules_with_Makefiles_and_Code
/thirdparty/boost
Код подмодуль будет ссылаться повысить такие вещи, как так (например):
#include <boost/property_tree/ptree.hpp>
И модуль к югу сделать файлы будут создавать такой код, как так (например):
g++ -c -o code.o code.cpp -I/root/thirdparty/boost
Наша сторонняя библиотека ускорения - версия 1.37. Однако некоторые модули начали использовать более поздние версии boost. Эта проблема была замаскирована, потому что машины, на которых были построены эти модули, содержат boost 1.41, установленный в/usr/include/boost.
Проблема возникла из-за того, что на машине нового пользователя не было установленного 1.41 в/usr/include. В идеале я бы хотел, чтобы g ++ искал повышение в стороннем каталоге и больше нигде. Таким образом, мы можем более точно контролировать, как создается база кода.
-I < dir> места < dir> до того, как система включит во время поиска, но системные компоненты по-прежнему смотрятся, и именно здесь могут быть установлены более поздние версии boost, зависящие от машины. Я могу подавить взгляд на систему, но это было бы настоящей болью.
Есть ли вообще умный способ пойти об этом, кроме замены:
#include <boost/something.hpp>
в
#include <thirdparty/boost/something.hpp>
? Если это помогает, я использую gnu make 3.81 и g ++ 4.4.5 на redhat linux.
Спасибо, но я не знаю, если -Я помогу в этом случае. Если более поздняя версия SomeBoost.hpp не найдена в -I/root/thirdparty,/usr/include будет по-прежнему рассматриваться для SomeBoost.hpp. – Bitdiot