Comment définir une variable de préprocesseur via cmake?
Le code équivalent serait #define foo
.
Pendant longtemps, CMake avait la commande add_definitions
à cet effet. Cependant, récemment, la commande a été remplacée par une approche plus fine (commandes distinctes pour les définitions de compilation, répertoires d’inclusion et options du compilateur).
Un exemple utilisant les nouvelles add_comstack_definitions :
add_comstack_definitions(OPENCV_VERSION=${OpenCV_VERSION}) add_comstack_definitions(WITH_OPENCV2)
Ou:
add_comstack_definitions(OPENCV_VERSION=${OpenCV_VERSION} WITH_OPENCV2)
La bonne partie de ceci est que cela contourne la ruse minable mise en place par add_definitions
pour add_definitions
. CMake est un système si minable, mais ils finissent par trouver un peu de bon sens.
Vous trouverez plus d’explications sur les commandes à utiliser pour les indicateurs de compilation ici: https://cmake.org/cmake/help/latest/command/add_definitions.html
De même, vous pouvez le faire par cible, comme expliqué dans la réponse de Jim Hunziker.
Pour ce faire pour une cible spécifique, vous pouvez effectuer les opérations suivantes:
target_comstack_definitions(my_target PRIVATE FOO=1 BAR=1)
Vous devriez le faire si vous avez plusieurs cibles que vous construisez et que vous ne voulez pas qu’elles utilisent toutes les mêmes indicateurs.