使用CMake包含外部makefile

12

我希望在我的软件的 Makefile 中包含一个来自外部库的 makefile。最简单的方法是找出与 include ${dir}/makefile 等效的 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,看看是否可以工作。

1个回答

1
我认为这个要求完全不符合CMake的设计模型,因为Makefile是在生成阶段生成的,而CMake的核心原则之一是使其具有跨平台性,所以更好的想法可能是:
  1. 用CMake脚本重写外部构建系统
  2. 将CMake脚本包含在您的项目中
如果工作量很大,您可以尝试使用add_custom_target / add_custom_command来执行一些开箱即用的命令来调整生成的文件,但这些也会带来相当大的工作量-只需阅读手册并寻找更多机会。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接