2012-07-30 166 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做一些即裝即用的命令來調整生成的文件,但這些也會導致相當大的努力 - 只要閱讀手冊,並尋找更多的機會。