Я хочу условно скомпилировать некоторый код C ++, который использует boost, и сделать так, чтобы он не пытался скомпилировать код, зависящий от boost, если boost отсутствует.
Есть ли в boost какой-либо глобальный макрос, который будет определен, например __BOOST__
, что я могу проверить?
РЕДАКТИРОВАТЬ: Теперь мне ясно, что я должен достичь этого на уровне makefile. Я работаю над OSX лев. Использование GNU Make
ТИПИЧНЫЙ способ, которым это делается, состоит в том, чтобы использовать «сценарий конфигурации» или аналогичный, который обнаруживает, присутствует ли / присутствует обязательный / необязательный компонент (-ы), и затем выборочно устанавливает некоторые опции -D для системы сборки.
Очевидно, что если это просто ваш собственный проект или небольшой дистрибутив, вы можете сделать то же самое вручную.
Вам, вероятно, также нужна пара ifdef
тип выбора в Makefile, если вам нужны библиотечные файлы.
Один из самых простых способов определить, установлена ли нужная вам часть boost, — попытаться скомпилировать ее. Если есть ошибки, вероятной причиной является то, что эта часть boost отсутствует (это, очевидно, не сработает, если отсутствуют более важные части — например, отсутствие установленного компилятора или стандартной библиотеки также приведет к компиляции сбой. Вот почему почти все инструменты настройки типа «начинают с самых базовых функций и идут вверх по дереву зависимостей»).
Других решений пока нет …