在 CMake 中,如果目录不存在,我希望创建一个目录?
什么时候创建目录?
若要在 CMake 生成生成系统时创建目录,
file(MAKE_DIRECTORY ${directory})
在 add_custom_command()命令(向生成的构建系统添加自定义构建规则)和 add_custom_target()命令(向生成的构建系统添加没有输出的目标以便始终构建目标)中,指定在构建时执行的命令。通过执行命令 ${CMAKE_COMMAND} -E make_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})
这些将在配置时运行 都有:
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})
除了 Chin Huang 的回复,你也可以在构建 add_custom_command的时候这样做:
add_custom_command
add_custom_command(TARGET ${target_name} PRE_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory ${directory})
您还可以更改使用 PRE_BUILD | PRE_LINK | POST_BUILD参数创建目录的时刻。
PRE_BUILD
PRE_LINK
POST_BUILD