Создание каталога в CMake

149

В CMake я хочу создать каталог, если он еще не существует. Как я могу это сделать?

Джукиа
источник

Ответы:

258

Когда вы хотите создать каталог?

При создании системы сборки

Чтобы создать каталог, когда CMake генерирует систему сборки,

file(MAKE_DIRECTORY ${directory})

Во время сборки

В add_custom_command()команде (которая добавляет настраиваемое правило сборки к сгенерированной системе сборки) и add_custom_target()команде (которая добавляет цель без вывода, поэтому она всегда будет построена) вы указываете команды для выполнения во время сборки. Создайте каталог, выполнив команду ${CMAKE_COMMAND} -E make_directory. Например:

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

Во время установки

Чтобы создать каталог во время установки,

install(DIRECTORY DESTINATION ${directory})
Чин Хуанг
источник
Лаконично и быстро. Попадает в цель сразу! Спасибо.
eigenfield
26

Чтобы создать каталог во время установки,

install(DIRECTORY DESTINATION ${directory})

Оба они будут работать во время настройки:

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

Для создания во время сборки используйте настраиваемую цель:

add_custom_target(mytargetname ALL COMMAND ${CMAKE_COMMAND} -E make_directory ${directory})
умный
источник
12

В дополнение к ответу Чин Хуанга вы также можете сделать это во время сборки с помощью add_custom_command:

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

Вы также можете изменить момент создания вашего каталога с помощью PRE_BUILD| PRE_LINK| POST_BUILDпараметры.

Евгений Бабиченко
источник