我想在我自己的软件的makefile中包含来自外部库的makefile。最简单的方法是找出Makefile等效于include ${dir}/makefile
的CMake代码。
但也许我应该给出一些背景信息。我试图将PETSc(和SLEPc)集成到我的代码中。以下是使用SLEPc的示例中的一些代码(尽管PETSc几乎相同):
hello: hello.o chkopts
-${CLINKER} -o hello hello.o ${SLEPC_LIB}
${RM} hello.o
include ${SLEPC_DIR}/conf/slepc_common
正如您所看到的,它需要包含一个包含一堆其他makefile的特定makefile。这有点奇怪,因为看起来只有一个包含目录会更简单,但显然还有比我理解的更多。无论如何,我的第一个解决方案是简单地包含它想要的makefile,看看它是否有效。
答案 0 :(得分:1)
作为CMake的一部分有一个include method。如果您正确设置策略范围(在我相信2.8之前不起作用),它应该处理PROJECT方法的重复使用并为您提供所需的结果。我没有尝试过这一点,但值得一试。
答案 1 :(得分:1)
我认为这个要求根本不适合CMake的设计模型,因为Makefile是在生成阶段生成的,而CMake的核心原则之一是使其<强>跨平台,所以更好的想法可能是:
如果努力量巨大,您可以尝试使用 add_custom_target / add_custom_command 来执行一些开箱即用的命令来调整生成的文件,但这些也会导致相当大的努力 - 只需阅读手册并寻求更多机会。