使用CMake包含外部makefile

使用CMake包含外部makefile,makefile,cmake,Makefile,Cmake,我想在我自己软件的makefile中包含一个来自外部库的makefile。最简单的方法是为等价于include${dir}/Makefile的Makefile找出CMake代码 但也许我应该给出一点背景。我正在尝试将PETSc(和SLEPc)集成到我的代码中。下面是使用SLEPc的示例中的一些代码(尽管PETSc基本相同): 如您所见,它需要包含一个特定的makefile,该makefile包含一组其他makefile。这有点奇怪,因为似乎只有一个include目录会更简单,但显然还有很多我无法

我想在我自己软件的makefile中包含一个来自外部库的makefile。最简单的方法是为等价于
include${dir}/Makefile
的Makefile找出CMake代码

但也许我应该给出一点背景。我正在尝试将PETSc(和SLEPc)集成到我的代码中。下面是使用SLEPc的示例中的一些代码(尽管PETSc基本相同):


如您所见,它需要包含一个特定的makefile,该makefile包含一组其他makefile。这有点奇怪,因为似乎只有一个include目录会更简单,但显然还有很多我无法理解的地方。无论如何,我的第一个解决方案是简单地包含它想要的makefile,看看它是否有效。

我认为这个要求根本不适合CMake的设计模型,因为Makefiles是在生成阶段生成的,CMake的核心原则之一是使其跨平台,因此,更好的想法可能是:

  • 在CMake脚本中重写外部构建系统
  • 在项目中包括CMake脚本
  • 如果工作量很大,您可以尝试使用添加_自定义_目标/add_自定义_命令执行一些开箱即用的命令来调整生成的文件,但这些也会带来相当大的工作量-只需阅读手册并寻找更多机会即可

    hello: hello.o chkopts
            -${CLINKER} -o hello hello.o ${SLEPC_LIB}
            ${RM} hello.o
    
    include ${SLEPC_DIR}/conf/slepc_common