在CMake中创build一个目录

在CMake中,我想创build一个目录,如果它不存在。 我怎样才能做到这一点?

你想什么时候创build目录?

在构build系统生成

当CMake生成构build系统时要创build一个目录,

file(MAKE_DIRECTORY ${directory}) 

在build造时间

add_custom_command()命令(它向生成的生成系统添加一个自定义生成规则)和add_custom_target()命令(它添加一个没有输出的目标,所以总是会生成),你可以指定在生成时执行的命令时间。 通过执行命令${CMAKE_COMMAND} -E make_directory创build一个目录。 例如:

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

在安装时

要在安装时创build一个目录,

 install(DIRECTORY DESTINATION ${directory}) 

要在安装时创build一个目录,

 install(DIRECTORY DESTINATION ${directory}) 

这些将在configuration时运行:

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

要在构build过程中创build,请使用自定义目标:

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

除了Chin Huang的回复之外,你还可以在add_custom_command时使用add_custom_command来做到这add_custom_command

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

当你的目录是用PRE_BUILD |创build的时候,你也可以改变这个时刻 PRE_LINK | POST_BUILD参数。