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.
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.