2011-07-21 22 views
30

Estoy usando el cliente Mongodb y Boost en mi aplicación C++. Debido a que el cliente de Mongodb todavía está utilizando el sistema de archivos Boost anterior y mi aplicación C++ está utilizando el sistema de archivos versión 3 desde el impulso 1.47.0, entran en conflicto.Cómo agregar la definición de macro en cmake?

he encontrado una manera de resolver este problema de compilación, es decir, añadir una definición de macro antes de todas las sentencias de los archivos de cabecera de Boost en mis archivos cpp:

#define BOOST_FILESYSTEM_VERSION 2 

Pero quiero saber cómo poner la encima de la definición de la macro en mis archivos de proyecto CMake.

Respuesta

46

Eche un vistazo a add_definitions, que agregará sus definiciones a la línea de comandos del compilador, p. -D con gcc, o /D con MSVC. Pruebe algo como:

add_definitions(-DBOOST_FILESYSTEM_VERSION=2) 

En su caso, Sin duda con el método add_definition, pero una alternativa puede tomar un vistazo a configure_file. Luego puede crear una plantilla de archivo de encabezado, que se rellenará con cmake-values ​​e incluir esto en sus archivos de origen. Esto puede ser útil si tiene muchos, muchos parámetros configurables que están determinados por CMake.

+0

Gracias. Olvidé agregar =. Ahora mis códigos parecen limpios. –

+0

nice, useful for me –

+0

Esto ayudó a compilar un proyecto de C++ 0x que de otro modo no se compilaría. Usted señor, es impresionante! : D –

Cuestiones relacionadas