在GNU make
中,如果目标A依赖于两个目标B和C,但使用目标C构建A则需要已经构建目标B(但目标C本身不依赖于B) ,我可以使用仅限订单的先决条件。
CMake
还有其他选择吗?我知道CMake
只是一个配置工具,所以这个问题可以更好地改写为“我能以某种方式编写CMakeLists.txt,以便生成仅具有订单的先决条件的Makefile吗?”
也欢迎替代解决方案。任何帮助将不胜感激。
答案 0 :(得分:1)
使用仅订购先决条件的典型情况是确保在某个make规则中使用目录之前准备好目录。通常, cmake 负责处理其控制下的所有目标的目录。但是如果你真的需要一些目录,你可以使用这样的自定义目标命令:
add_custom_target(build-time-make-directory ALL
COMMAND ${CMAKE_COMMAND} -E make_directory ${directory})
此目标是"没有输出"所以它总会建成,但依赖它的目标不一定会被重建。
这不仅限于mkdir
。这是另一个例子:
add_executable(qqexe qq.c)
add_custom_target(_custom_target COMMAND touch pp.c COMMENT pp)
add_dependencies(qqexe _custom_target)
每次运行 make 时, pp.c 的时间戳都会刷新,但 qqexe 将不会重建,除非时间戳为 qq.c 更改。