使用CMake包含外部makefile

had*_*sed 10 makefile cmake

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

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

hello: hello.o chkopts
        -${CLINKER} -o hello hello.o ${SLEPC_LIB}
        ${RM} hello.o

include ${SLEPC_DIR}/conf/slepc_common
Run Code Online (Sandbox Code Playgroud)

如您所见,它需要包含一个特定的makefile,其中包含一堆其他makefile.这有点奇怪,因为看起来只有一个包含目录会更简单,但显然它比我理解的更多.无论如何,我的第一个解决方案是简单地包含它想要的makefile,看看是否有效.

Fei*_*Fei 1

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

  1. 在 CMake 脚本中重写外部构建系统
  2. 在您的项目中包含 CMake 脚本

如果工作量很大,您可以尝试使用add_custom_target/add_custom_command执行一些开箱即用的命令来调整生成的文件,但这些也需要付出相当大的努力 - 只需阅读手册并寻求更多机会。