web-dev-qa-db-fra.com

Créer un répertoire dans CMake

Dans CMake, je veux créer un répertoire s'il n'existe pas déjà. Comment puis-je faire ceci?

119
Jookia

Quand voulez-vous créer le répertoire?

À la génération du système de construction

Pour créer un répertoire lorsque CMake génère le système de construction,

file(MAKE_DIRECTORY ${directory})

Au moment de la construction

Dans la commande add_custom_command() (qui ajoute une règle de construction personnalisée au système de génération généré), ainsi que dans la commande add_custom_target() (qui ajoute une cible sans résultat, elle sera toujours construite), vous spécifiez les commandes à exécuter au moment de la construction. Créez un répertoire en exécutant la commande ${CMAKE_COMMAND} -E make_directory. Par exemple:

add_custom_target(build-time-make-directory ALL
    COMMAND ${CMAKE_COMMAND} -E make_directory ${directory})

Au moment de l'installation

Pour créer un répertoire au moment de l'installation,

install(DIRECTORY DESTINATION ${directory})
207
Chin Huang

Pour créer un répertoire au moment de l'installation,

install(DIRECTORY DESTINATION ${directory})

Ceux-ci vont les deux s'exécuter au moment de la configuration:

file(MAKE_DIRECTORY ${directory})
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${directory})

Pour créer lors de la construction, utilisez une cible personnalisée:

add_custom_target(mytargetname ALL COMMAND ${CMAKE_COMMAND} -E make_directory ${directory})
19
smarquis

En plus de la réponse de Chin Huang, vous pouvez également le faire au moment de la construction avec add_custom_command:

add_custom_command(TARGET ${target_name} PRE_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory ${directory})

Vous pouvez également changer le moment où votre répertoire est créé avec PRE_BUILD | PRE_LINK | Paramètres POST_BUILD.

3