Tworzenie katalogu w CMake

143

W CMake chcę utworzyć katalog, jeśli jeszcze nie istnieje. W jaki sposób mogę to zrobić?

Jookia
źródło

Odpowiedzi:

250

Kiedy chcesz utworzyć katalog?

Podczas generowania systemu kompilacji

Aby utworzyć katalog, gdy CMake generuje system kompilacji,

file(MAKE_DIRECTORY ${directory})

W czasie kompilacji

W add_custom_command()poleceniu (które dodaje niestandardową regułę kompilacji do wygenerowanego systemu kompilacji) i add_custom_target()poleceniu (które dodaje cel bez wyjścia, więc zawsze będzie budowany), określasz polecenia do wykonania w czasie kompilacji. Utwórz katalog, wykonując polecenie ${CMAKE_COMMAND} -E make_directory. Na przykład:

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

W czasie instalacji

Aby utworzyć katalog podczas instalacji,

install(DIRECTORY DESTINATION ${directory})
Chin Huang
źródło
Zwięźle i szybko. Trafia od razu w cel! Dzięki.
trueadjustr
25

Aby utworzyć katalog podczas instalacji,

install(DIRECTORY DESTINATION ${directory})

Będą zarówno uruchomić w momencie configure:

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

Aby utworzyć podczas kompilacji, użyj niestandardowego celu:

add_custom_target(mytargetname ALL COMMAND ${CMAKE_COMMAND} -E make_directory ${directory})
smarquis
źródło
10

Oprócz odpowiedzi Chin Huanga możesz to również zrobić w czasie kompilacji za pomocą add_custom_command:

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

Możesz także zmienić moment, w którym tworzony jest katalog za pomocą PRE_BUILD| PRE_LINK| POST_BUILDparametry.

Yevhenii Babichenko
źródło