我正在开发如下构建的库项目
Base/
CMakeLists.txt
src/
tools/
CMakeLists.txt
tests/
CMakeLists.txt
debug/
release/
CMakeLists.txt
中的主Base/
包含构建库的目标,其源位于src/
,我有一个配置来创建debug/
和{{1}并调用release/
来获取构建结构。
这导致以下结构
cmake -DCMAKE_RELEASE_TYPE=<DEBUG|RELEASE> ..
debug/
Makefile
tests/
Makefile
tools/
Makefile
和tools/
内置的程序会创建输出文件,我试图为创建的构建结构中的每个Makefile创建一个tests/
目标。
我已经使用了clean_output
但它并没有携带add_custom_target(clean_output rm -rf *.ext)
和tests/
中的Makefile文件。我已经尝试在这些目录中的tools/
文件中添加相同的命令,但是我收到一条错误消息,我无法定义已在同一项目中定义的目标。
我尝试将CMakeLists.txt
与WORKING_DRECTORY
和CMAKE_CURRENT_LIST_DIR
结合使用无效。
有谁知道如何在项目的所有目录中定义自定义目标?
编辑:我不是要尝试将文件添加到标准CMAKE_CURRENT_BINARY_DIR
目标。我正在尝试创建一个额外的clean
目标,以便在保留可执行文件的同时删除一些文件。
答案 0 :(得分:2)
您可以指定工作目录和若干命令在一个目标中执行。
顺便说一句,你可以使用cmake -E remove_directory
:
add_custom_target(
clean_output
COMMAND
"${CMAKE_COMMAND}" -E remove_directory "${CMAKE_CURRENT_LIST_DIR}/directory/with/exts"
COMMAND
"${CMAKE_COMMAND}" -E remove_directory "${CMAKE_CURRENT_LIST_DIR}/other-dir/with/exts"
WORKING_DIRECTORY
"${CMAKE_CURRENT_LIST_DIR}"
)
答案 1 :(得分:1)
如果我理解您的问题,您可以使用set_directory_properties ADDITIONAL_MAKE_CLEAN_FILES
完成您想要的任务