В CMake я хочу создать каталог, если он еще не существует. Как я могу это сделать?
Создание каталога в CMake
Ответ 1
Когда вы хотите создать каталог?
При создании системы сборки
Чтобы создать каталог, когда 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})
Ответ 2
Чтобы создать каталог во время установки,
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})
Ответ 3
В дополнение к ответу Чин Хуан вы можете сделать это во время сборки с помощью add_custom_command
:
add_custom_command(TARGET ${target_name} PRE_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory ${directory})
Вы также можете изменить момент создания каталога с помощью PRE_BUILD
| PRE_LINK
| POST_BUILD
параметры.