2012-07-30 134 views
7

我想在我自己的软件的生成文件中包含来自外部库的生成文件。最简单的方法是找出与Makefile等价的include ${dir}/makefile的CMake代码。包含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文件的具体生成文件的。这有点奇怪,因为看起来只有include目录会更简单,但显然这比我理解的要多。无论如何,我的第一个解决方案是简单地包含它想要的makefile,看看它是否有效。

回答

0

有一个​​作为CMake的一部分。如果您正确设置了策略作用域(在我相信2.8之前不能正常工作),它应该处理PROJECT方法的重复使用,并为您提供期望的结果。我还没有尝试过这一点,但值得一试。

1

我相信这个要求期间CMake的核心原则生成阶段,一个是不适合的CMake的设计模型作为生成的Makefile文件都使它跨平台,所以更好的想法可能是:

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

如果努力是巨大的,你可以尝试add_custom_target/add_custom_command做一些即装即用的命令来调整生成的文件,但这些也会导致相当大的努力 - 只要阅读手册,并寻找更多的机会。