2016-06-28 2 views
2

Je veux générer quelques compiler constantes de temps. Le first answer à une autre question me rapproche assez. De mon CMakeLists.txt:Get CMake pour déclarer une cible phony

add_library(${PROJECT_NAME} STATIC ${CXX_SRCS} compile_time.hpp) 
add_custom_command(OUTPUT compile_time.hpp 
    COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/compile_time.cmake) 

Cela fonctionne dans le sens que la première fois que je lance make, il génère compile_time.hpp, de sorte que les valeurs des variables sont définies quand je lance make et non cmake. Mais compile_time.hpp n'est pas refait quand je réexécute make ou même cmake pour refaire les makefiles.

Comment faire pour que la cible compile_time.cpp soit marquée comme phony afin qu'elle soit toujours refaite? J'ai essayé

add_custom_target(compile_time.hpp) 

sans aucun effet.

Répondre

3

add_custom_target sans DEPENDS L'option crée une cible "bidon". Pour faire une cible dépend de celui, utilisez add_dependencies() appel « phony »:

add_custom_target(compile_time 
    COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/compile_time.cmake 
) 
# Because we use *target-level* dependency, there is no needs in specifying 
# header file for 'add_library()' call. 
add_library(${PROJECT_NAME} STATIC ${CXX_SRCS}) 
add_dependencies(${PROJECT_NAME} compile_time) 

dépendance de la bibliothèque de l'en-tête compile_time.h sera détecté automatiquement par les en-têtes de balayage. Comme le script compile_time.cmake met à jour cet en-tête sans condition, la bibliothèque sera reconstruite à chaque fois.