Как добавить определение макроса в cmake? - PullRequest
30 голосов
/ 21 июля 2011

Я использую клиент Mongodb и Boost в своем приложении C ++. Так как клиент Mongodb по-прежнему использует старую файловую систему Boost, а мое приложение C ++ использует файловую систему версии 3 от boost 1.47.0, они конфликтуют.

Я нашел способ решить эту проблему компиляции, а именно добавить определение макроса, прежде чем все операторы include для заголовочных файлов Boost в моих файлах cpp:

#define BOOST_FILESYSTEM_VERSION 2

Но я хочу знать, как поместить приведенное выше определение макроса в мои файлы проекта CMake.

1 Ответ

49 голосов
/ 21 июля 2011

Посмотрите на add_definitions , которая добавит ваши определения в командную строку вашего компилятора, например, -D с gcc или /D с MSVC. Попробуйте что-то вроде:

add_definitions( -DBOOST_FILESYSTEM_VERSION=2 )

В вашем случае я бы определенно выбрал метод add_definition, но в качестве альтернативы можно взглянуть на configure_file . Затем вы можете создать шаблон заголовочного файла, который будет заполнен cmake-значениями и включит его в ваши исходные файлы. Это может быть полезно, если у вас есть много, много настраиваемых параметров, которые определяются CMake.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...