舊項目Makefile 遷移CMake的一種方法:include Makefile


有些c++舊項目用Makefile,要遷移CMake的時候非常痛苦,有些像static pattern的語法和make自帶命令 cmake要重寫一套非常的麻煩。

因此這里用trick的方法實現了一種include makefile的方法。

 

# trick to include raw makefile
FILE(WRITE ${CMAKE_BINARY_DIR}/.cmake_dummy.c "int main(void){return 0;}\n")

function(INCLUDE_MAKEFILE tg mkfile)
  STRING(CONCAT OTPT ${tg} .out)
  ADD_CUSTOM_COMMAND(
      OUTPUT ${OTPT}
      COMMAND ${CMAKE_COMMAND} -E touch ${OTPT}
      COMMAND ${CMAKE_COMMAND} -E echo
      'include ${mkfile}'
      >> ${CMAKE_SOURCE_DIR}/Makefile
  )
  ADD_EXECUTABLE(${tg} ${CMAKE_BINARY_DIR}/.cmake_dummy.c ${OTPT})
endfunction()

# remember to execute `make ${target}` first to active makefile including
# for example : make rocksdbjni
INCLUDE_MAKEFILE(rocksdbjni ${CMAKE_SOURCE_DIR}/rocksdbjni.mk)

 

大致就是創建一個target用於執行將 include makefile 的語句追加到Makefile 。比較麻煩的是目前 include要手動激活,比如上述示例,cmake . 完后需要 make rocksdbjni 來激活這個target對應的include。當然實在不行也可以考慮加一個execute_process到最后觸發一個后台延遲去代碼激活的方法來省去還要make target這一步。。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM