Erstellen eines Verzeichnisses in CMake

143

In CMake möchte ich ein Verzeichnis erstellen, falls es noch nicht vorhanden ist. Wie kann ich das machen?

Jookia
quelle

Antworten:

250

Wann möchten Sie das Verzeichnis erstellen?

Bei der Erstellung des Build-Systems

So erstellen Sie ein Verzeichnis, wenn CMake das Build-System generiert:

file(MAKE_DIRECTORY ${directory})

Zur Bauzeit

Im add_custom_command()Befehl (der dem generierten Erstellungssystem eine benutzerdefinierte Erstellungsregel hinzufügt) und im add_custom_target()Befehl (der ein Ziel ohne Ausgabe hinzufügt, damit es immer erstellt wird) geben Sie die Befehle an, die zur Erstellungszeit ausgeführt werden sollen. Erstellen Sie ein Verzeichnis, indem Sie den Befehl ausführen ${CMAKE_COMMAND} -E make_directory. Beispielsweise:

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

Zur Installationszeit

Um ein Verzeichnis zur Installationszeit zu erstellen,

install(DIRECTORY DESTINATION ${directory})
Chin Huang
quelle
Kurz und bündig. Trifft das Ziel sofort! Vielen Dank.
Truthadjustr
25

Um ein Verzeichnis zur Installationszeit zu erstellen,

install(DIRECTORY DESTINATION ${directory})

Diese werden beide zur Konfigurationszeit ausgeführt:

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

Verwenden Sie zum Erstellen während des Builds ein benutzerdefiniertes Ziel:

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

Zusätzlich zu Chin Huangs Antwort können Sie dies auch zur Erstellungszeit tun mit add_custom_command:

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

Sie können auch den Zeitpunkt ändern, zu dem Ihr Verzeichnis mit PRE_BUILD| erstellt wird PRE_LINK| POST_BUILDParameter.

Yevhenii Babichenko
quelle