Подтвердить что ты не робот

Как добавить определение макроса в cmake?

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

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

#define BOOST_FILESYSTEM_VERSION 2

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

4b9b3361

Ответ 1

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

add_definitions( -DBOOST_FILESYSTEM_VERSION=2 )

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