我想要一个顶级自定义目标和嵌套子模块,它们能够通过添加/绑定 custom_command 来扩展这个已经存在的目标。现在我面临一个问题:如果add_custom_command(TARGET target_name ...)
不是在定义目标的文件中使用(目标是在顶级 CMakeLists.txt 上定义的),那么这个 custom_command 将被简单地忽略。
细节:
1) 在顶层CMakelists.txt上创建 custom_target
cmake_minimum_required(VERSION 2.8)
add_custom_target(custom_tg
COMMAND ls > custom_target.txt
)
add_custom_command(TARGET custom_tg
COMMAND ls > custom_command1.txt
)
add_subdirectory(sub)
2)在子目录“sub”中有其他CMakeLists.txt(模块),我希望能够使用自定义命令扩展现有目标。
add_custom_command(TARGET custom_tg
COMMAND ls > custom_command2.txt
)
3)当我创建构建目录并运行时
cmake .. && make custom_tg
输出文件是custom_target.txt和custom_command1.txt,但是没有custom_command2.txt,这实际上是我的问题。
如果我查看build/CMakeFiles/custom_tg.dir/build.make我没有看到那里提到custom_command2.txt。这是build.make文件的内容:http: //pastebin.com/zVVS4sYL。
实际上我在 Cmake 生成的文件树中找不到关于custom_command2.txt的任何提及,这对我来说看起来很奇怪。
期待您的帮助。