在 CMake 中创建目录

在 CMake 中,如果目录不存在,我希望创建一个目录?

121077 次浏览

什么时候创建目录?

在构建系统生成时

若要在 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})

要在安装时创建目录,

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(TARGET ${target_name} PRE_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory ${directory})

您还可以更改使用 PRE_BUILD | PRE_LINK | POST_BUILD参数创建目录的时刻。