首页 > 解决方案 > 将简单目标添加到 cmake 生成的 makefile

问题描述

TL;DR:如何让 cmake 在生成的 makefile 中输出以下规则?

.PHONY: target-I-want
target-I-want:
  echo "Hello World"

你好,

我习惯于使用自己的 makefile 设置项目来运行它可能需要的任何类型的脚本。

我现在正在使用的项目是使用 cmake 构建的,所以我不能只制作自己的 makefile,因为它会被 cmake 生成的文件覆盖。

我正在使用不同的名称设置自己的makefile,例如makefile.dev,但由于我不想make -f makefile.dev target-I-want每次都运行,我认为add_custom_target可以帮助我。

这就是我添加到 CMakeLists.txt 中的内容:

ADD_CUSTOM_TARGET(target-I-want
  COMMAND make -f ${CMAKE_CURRENT_SOURCE_DIR}/makefile.dev target-I-want
)

它有效。但是当我运行它时,它确实比只运行我想要的命令 ( make -f ${CMAKE_CURRENT_SOURCE_DIR}/makefile.dev target-I-want) 更喜欢检查 cmake 构建系统并通过许多自动生成的目标。

我想知道是否有一种方法可以像我写的那样添加我想要的命令,没有额外的东西。

标签: bashmakefilecmake

解决方案


我没有看到将任意文本插入生成的 Makefile 的命令。

根据您的评论,您需要让 CMake 生成一个自定义目标,该目标不包括使用 CMake 可执行文件本身。虽然可以抑制 Makefile 重新生成和详细状态消息,但自定义目标仍然在生成的 Makefile 的整体框架中使用 CMake 可执行文件。

如果您真的不想键入,make -f makefile.dev target-I-want则必须找到另一种方法,例如设置别名或调用命令的脚本,或将任意文本附加到由 CMake 生成的顶级 Makefile。


推荐阅读