Условно скомпилировать, если есть boost

Я хочу условно скомпилировать некоторый код C ++, который использует boost, и сделать так, чтобы он не пытался скомпилировать код, зависящий от boost, если boost отсутствует.

Есть ли в boost какой-либо глобальный макрос, который будет определен, например __BOOST__, что я могу проверить?

РЕДАКТИРОВАТЬ: Теперь мне ясно, что я должен достичь этого на уровне makefile. Я работаю над OSX лев. Использование GNU Make

2

Решение

ТИПИЧНЫЙ способ, которым это делается, состоит в том, чтобы использовать «сценарий конфигурации» или аналогичный, который обнаруживает, присутствует ли / присутствует обязательный / необязательный компонент (-ы), и затем выборочно устанавливает некоторые опции -D для системы сборки.

Очевидно, что если это просто ваш собственный проект или небольшой дистрибутив, вы можете сделать то же самое вручную.

Вам, вероятно, также нужна пара ifdef тип выбора в Makefile, если вам нужны библиотечные файлы.

Один из самых простых способов определить, установлена ​​ли нужная вам часть boost, — попытаться скомпилировать ее. Если есть ошибки, вероятной причиной является то, что эта часть boost отсутствует (это, очевидно, не сработает, если отсутствуют более важные части — например, отсутствие установленного компилятора или стандартной библиотеки также приведет к компиляции сбой. Вот почему почти все инструменты настройки типа «начинают с самых базовых функций и идут вверх по дереву зависимостей»).

2

Другие решения

Других решений пока нет …