Définir une macro de préprocesseur via cmake

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.