将简单目标添加到cmake生成的makefile

时间:2019-04-09 15:30:25

标签: bash makefile cmake

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

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

嗨,

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

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

我正在使用不同的名称(例如makefile.dev)设置我自己的makefile,但是由于我不想每次都运行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构建系统并通过许多自动生成的目标。

我想知道是否有一种方法可以像我写的一样添加我想要的命令,而没有其他功能。

1 个答案:

答案 0 :(得分:1)

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

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

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