Crear un directorio en CMake
En CMake, quiero crear un directorio si aún no existe. ¿Cómo puedo hacer esto?
3 answers
¿Cuándo desea crear el directorio?
En la generación del sistema de compilación
Para crear un directorio cuando CMake genera el sistema de compilación,
file(MAKE_DIRECTORY ${directory})
En el tiempo de compilación
En el comando add_custom_command()
(que agrega una regla de compilación personalizada al sistema de compilación generado) y el comando add_custom_target()
(que agrega un destino sin salida para que siempre se compile), especifique los comandos que se ejecutarán en el momento de la compilación. Cree un directorio ejecutando el comando ${CMAKE_COMMAND} -E make_directory
. Para 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})
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-04 06:26:59
Para crear un directorio en el momento de la instalación,
install(DIRECTORY DESTINATION ${directory})
Estos ambos se ejecutarán en el momento de configuración:
file(MAKE_DIRECTORY ${directory})
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${directory})
Para crear durante la compilación, use un destino personalizado:
add_custom_target(mytargetname ALL COMMAND ${CMAKE_COMMAND} -E make_directory ${directory})
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-24 19:08:55
Además de la respuesta de Chin Huang, también puedes 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 en que su directorio se crea con los parámetros PRE_BUILD | PRE_LINK | POST_BUILD.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-13 12:25:02