web-dev-qa-db-fra.com

Comment ajouter la définition d'une macro dans cmake?

J'utilise le client Mongodb et Boost dans mon application C++. Étant donné que le client Mongodb utilise toujours l'ancien système de fichiers Boost et que mon application C++ utilise le système de fichiers version 3 du boost 1.47.0, ils sont en conflit.

J'ai trouvé un moyen de résoudre ce problème de compilation, à savoir ajouter une définition de macro avant d'inclure toutes les instructions pour les fichiers d'en-tête de Boost dans mes fichiers cpp:

#define BOOST_FILESYSTEM_VERSION 2

Mais je veux savoir comment mettre la définition de la macro ci-dessus dans mes fichiers de projet CMake.

33
Dean Chen

Jetez un œil à add_definitions , qui ajoutera vos définitions à votre ligne de commande du compilateur, par exemple -D avec gcc, ou /D avec MSVC. Essayez quelque chose comme:

add_definitions( -DBOOST_FILESYSTEM_VERSION=2 )

Dans votre cas, j'irais certainement avec le add_definition méthode, mais une alternative peut jeter un oeil à configure_file . Ensuite, vous pouvez créer un modèle de fichier d'en-tête, qui sera rempli de valeurs cmake et l'inclure dans vos fichiers source. Cela peut être utile si vous avez de très nombreux paramètres configurables qui sont déterminés par CMake.

51
André