2017-10-02 1 views
0

J'ai deux cibles pour mon fichier CMake. Après avoir exécuté cmake .., je peux soit dire faire rsutest pour les tests unitaires et de construire un exécutable de test ou dire faire rsu pour obtenir un exécutable normal. Si je construis ma cible de test, je veux ajouter une définition au code de test avec la commande add_definitions (-DRSU_TEST) afin que certaines des lignes du code réel puissent être ignorées. Comment puis-je écrire mon fichier CMake afin que la ligne #define RSU_TEST ne soit active que lorsque je construis la cible de test?Ajout d'une condition à la commande CMake add_definitions()

add_custom_target(rsutest COMMAND ${CMAKE_CTEST_COMMAND} DEPENDS rsu_test) 
add_custom_target(rsu COMMAND ${CMAKE_CTEST_COMMAND} DEPENDS rsu_agent) 

if(rsutest) // this if else statement doesn't work and I need a a condition 
add_definitions(-DRSU_TEST)// which will only be true when I build rsutest 
endif(rsutest) 
+0

'add_target_definitions()'? – arrowd

+0

êtes-vous sûr que cette commande existe? –

+1

Oups, c'est 'target_compile_definitions()'. – arrowd

Répondre

1
option(WITH_TEST "BUILD THE TEST CODE" OFF) 

if(WITH_TEST) 

add_definitions(-DRSU_TEST) 

endif() 

Alors si je veux exécuter le code de test que j'utilise cmake .. -DWITH_TEST = ON au lieu d'CMake ... Et éteignez-le par cmake .. -DWITH_TEST = OFF quand je veux ma construction normale.