Criando um diretório no CMake

143

No CMake, quero criar um diretório se ele ainda não existir. Como posso fazer isso?

Jookia
fonte

Respostas:

250

Quando você deseja criar o diretório?

Na geração do sistema de compilação

Para criar um diretório quando o CMake gerar o sistema de construção,

file(MAKE_DIRECTORY ${directory})

Em tempo de construção

No add_custom_command()comando (que inclui uma regra de construção customizada no sistema de construção gerado) e no add_custom_target()comando (que adiciona um destino sem saída para que ele sempre seja construído), você especifica os comandos a serem executados no momento da construção. Crie um diretório executando o comando ${CMAKE_COMMAND} -E make_directory. Por exemplo:

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

No momento da instalação

Para criar um diretório no momento da instalação,

install(DIRECTORY DESTINATION ${directory})
Chin Huang
fonte
Sucinto e rápido. Atinge o alvo imediatamente! Obrigado.
truthadjustr
25

Para criar um diretório no momento da instalação,

install(DIRECTORY DESTINATION ${directory})

Estes serão ambos executados em tempo de configure:

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

Para criar durante a construção, use um destino personalizado:

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

Além da resposta de Chin Huang, você também pode fazer isso em tempo de compilação com add_custom_command:

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

Você também pode alterar o momento em que seu diretório é criado com PRE_BUILD| PRE_LINK| POST_BUILDparâmetros.

Yevhenii Babichenko
fonte