Creazione di una directory in CMake


143

In CMake, voglio creare una directory se non esiste già. Come posso fare questo?

Risposte:


250

Quando vuoi creare la directory?

Alla generazione del sistema di generazione

Per creare una directory quando CMake genera il sistema di generazione,

file(MAKE_DIRECTORY ${directory})

Al momento della costruzione

Nel add_custom_command()comando (che aggiunge una regola di compilazione personalizzata al sistema di generazione generato) e nel add_custom_target()comando (che aggiunge una destinazione senza output in modo che venga sempre creato), si specificano i comandi da eseguire in fase di compilazione. Creare una directory eseguendo il comando ${CMAKE_COMMAND} -E make_directory. Per esempio:

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

Al momento dell'installazione

Per creare una directory al momento dell'installazione,

install(DIRECTORY DESTINATION ${directory})

Succinto e veloce. Colpisce subito il bersaglio! Grazie.
truthadjustr

25

Per creare una directory al momento dell'installazione,

install(DIRECTORY DESTINATION ${directory})

Entrambi verranno eseguiti al momento della configurazione:

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

Per creare durante la compilazione, utilizzare un target personalizzato:

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

10

Oltre alla risposta di Chin Huang, puoi farlo anche al momento della compilazione con add_custom_command:

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

Puoi anche cambiare il momento in cui la tua directory viene creata con PRE_BUILD| PRE_LINK| POST_BUILDparametri.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.