建立目录作为外部构建输出
时间: 2024-02-16 14:04:33 浏览: 12
可以使用CMake的`add_custom_command`和`add_custom_target`命令来实现建立目录作为外部构建输出的功能。
首先,在CMakeLists.txt中添加以下代码,创建一个自定义目标:
```
add_custom_target(output_directory ALL
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/output
COMMENT "Creating output directory"
)
```
这将创建一个名为`output_directory`的自定义目标,该目标的命令是使用CMake的`-E make_directory`命令创建一个名为`output`的目录。
接下来,在需要将输出文件复制到外部目录的目标中,添加以下代码:
```
add_dependencies(your_target output_directory)
add_custom_command(TARGET your_target POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:your_target> ${CMAKE_BINARY_DIR}/output/
COMMENT "Copying output file to output directory"
)
```
这将使目标`your_target`依赖于`output_directory`目标,并且在`your_target`构建完成后,使用`-E copy`命令将目标文件复制到`output`目录中。
需要注意的是,`${CMAKE_BINARY_DIR}`变量表示CMake的二进制输出目录,而`$<TARGET_FILE:your_target>`表示目标文件的完整路径。