gpt4 book ai didi

makefile - GNU Makefile 中的仅限订单先决条件在 CMake 中可用吗?如果没有,有哪些替代选项?

转载 作者:行者123 更新时间:2023-12-03 03:53:42 26 4
gpt4 key购买 nike

在 GNU make 中,如果目标 A 依赖于两个目标 B 和 C,但使用 objective-c 构建 A 需要目标 B 已经构建( objective-c 本身不依赖于但是 B),我可以使用仅限订单的先决条件。

CMake 中有其他替代方案吗?我知道 CMake 只是一个配置工具,因此问题可以更好地改写为“我可以以某种方式编写 CMakeLists.txt,以便它生成具有仅限订单先决条件的 Makefiles 吗?”

也欢迎替代解决方案。任何帮助将不胜感激。

最佳答案

使用仅订单先决条件的典型情况是确保在某些 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)

每次运行ma​​ke时,pp.c的时间戳都会刷新,但qqexe不会被重建,除非pp.c的时间戳qq.c发生变化。

关于makefile - GNU Makefile 中的仅限订单先决条件在 CMake 中可用吗?如果没有,有哪些替代选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47706095/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com