Crear un directorio en CMake

143

En CMake, quiero crear un directorio si aún no existe. ¿Cómo puedo hacer esto?

Jookia
fuente

Respuestas:

250

¿Cuándo quieres crear el directorio?

En la generación del sistema de construcción

Para crear un directorio cuando CMake genera el sistema de compilación,

file(MAKE_DIRECTORY ${directory})

En el momento de la construcción

En el add_custom_command()comando (que agrega una regla de compilación personalizada al sistema de compilación generado), y el add_custom_target()comando (que agrega un objetivo sin salida para que siempre se compile), usted especifica los comandos que se ejecutarán en el momento de la compilación. Cree un directorio ejecutando el comando ${CMAKE_COMMAND} -E make_directory. Por ejemplo:

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

En el momento de la instalación

Para crear un directorio en el momento de la instalación,

install(DIRECTORY DESTINATION ${directory})
Chin Huang
fuente
Sucinta y rápida. ¡Golpea al objetivo de inmediato! Gracias.
truthadjustr
25

Para crear un directorio en el momento de la instalación,

install(DIRECTORY DESTINATION ${directory})

Estos serán tanto correr en el momento de configure:

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

Para crear durante la compilación, use un objetivo personalizado:

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

Además de la respuesta de Chin Huang, también puede hacer esto en tiempo de compilación con add_custom_command:

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

También puede cambiar el momento, cuando su directorio se crea con PRE_BUILD| PRE_LINKEl | POST_BUILDparámetros

Yevhenii Babichenko
fuente