因此,似乎有很多關於Autotools與CMake的主題的書寫,但對於我來說,我似乎無法找到關於如何將項目從Autotools到CMake。有人知道嗎?將Autotools轉換爲CMake的教程
回答
有如何(續)沒有自動該工具可以將任意構建系統從autotools轉換爲cmake。我已經手動轉換了一些中等大小的項目。我喜歡爲每組configure.ac
和/或Makefile.am
文件創建一個CMakeLists.txt
文件,以簡化從autotools到cmake的轉換。
不幸的是,這種手動方法需要在兩個系統中開發專業知識,其中任何一個都不應該造成任何無辜。
記錄您的機器上實際執行的自動工具創建的內容。這將幫助您驗證您的CMake構建系統是否使用相同的編譯標誌實際編譯每個文件,並創建autotools執行的每個庫和可執行文件;至少在你的機器上,有你的選擇。
%的./configure [配置選項]> configure_autotools.log
%化妝> make_autotools.log
%使安裝> make_install_autotools.log
在每一個目錄包含一個
configure.ac
或Makefile.am
文件,包括項目根目錄,新建一個空的CMakeLists.txt文件。將cmakeadd_subdirectory
(...)命令添加到每個非葉CMakeLists.txt文件,以將所有cmake文件鏈接到樹結構中。將cmake project()和cmake_minimum_required()命令添加到頂級CMakeLists.txt文件的頂部。project(MyProject) cmake_minimum_required(VERSION 2.8) add_subdirectory(foo)
您現在有一個一致的,但沒用的CMake構建系統,什麼也不做。在更深的CMakeLists.txt文件中臨時添加一些
message(...)
命令以驗證所有內容是否正確連接。請記住,在調試cmake配置問題時,message()
是您的朋友。確保您的cmake基礎架構通過現在嘗試構建而工作。什麼都不會建立或安裝;但此時鍛鍊cmake基礎設施很有價值。%的mkdir build_cmake
%CD build_cmake
%ccmake -i [項目根]
[配置,配置,生成]
%使VERBOSE = 1
%make install
這是最難的部分。逐個填寫您的CMakeLists.txt文件。下面是一些指導原則:
打開兩個並排側編輯器,一個用的CMakeLists.txt文件,其他與相應的Makefile.am/configure.ac文件。
讓您的瀏覽器開啓至cmake commands documentation。
而不是從最頂部開始,通過建立一個小型圖書館或可執行文件,如果你能找到一個項目(cmake的
add_library()
或add_executable()
)創建cmake的規則開始。使用這種方法,您可以一次構建您的轉換。在添加每個目標時,定期測試您的cmake構建系統。
我喜歡使用cmake
file(GLOB ...)
命令來緊湊地創建源文件列表。請注意,這是一個有爭議的觀點。許多常見的自動工具節都有相應的CMake commands。例如autoconf AC_TRY_COMPILE可以轉換爲cmake TRY_COMPILE。但大多數情況下,我發現我必須瞭解每個小自動工具節所做的事情,並弄清楚如何編寫相應的cmake。此外,還有一個series of CMake modules可幫助創建類似於autotools的config.h文件。 Makefile.am文件通常更易於轉換,並且在轉換爲cmake之後實際上可以變得更緊湊。
將您的cmake生成結果與您在步驟1中捕獲的autotools日誌進行比較。編譯標誌是否相同?是否所有的目標都是相同的?是否安裝了相同的文件?
不幸的是,我最近沒有將autotools轉換爲cmake,所以我不能全面地編寫「如果您在Makefile.am中看到x,請在CMakeLists.txt中編寫y」。有人可以爲公開wiki提供一個好的位置,那些正在積極從autotools轉換到cmake的人可以積累一套完整的這樣的指南嗎?我不知道這是否計算器的回答是這樣的列表最好的地方......
對於額外的信用,一旦你擁有這一切的工作,調整你的cmake的規則,能夠構建和運行您的項目從Windows Visual Studio。嘗試用autotools!
這個轉換是非常項目特定的,這使得編寫一個普遍適用的教程很困難。
下面是一些工具的開始,可能會給你一些啓示。
http://www.vtk.org/Wiki/CMake#Converters_from_other_buildsystems_to_CMake
===== 與此相關的一個有趣的文章:
爲什麼KDE項目切換到CMake的 - 和 http://lwn.net/Articles/188693/
我看到了那些。但是他們只是特別的KDE,所以我沒有發現它們有幫助。 –
- 1. Autotools vs CMake
- 2. 將Makefile轉換爲CMake
- 3. 將解析教程轉換爲項目
- 4. 將舊的makefile轉換爲CMake
- 5. opengl教程xcode cmake
- 6. 將makefile項目轉換爲CMake
- 7. 將QMake項目轉換爲CMake
- 8. 如何將qmake轉換爲cmake?
- 9. 有什麼好的教程將HTML + CSS轉換爲WordPress?
- 10. 關於將普通視圖轉換爲GLSurfaceView的教程
- 11. PSD to Joomla轉換教程
- 12. 如何將JavaScript代碼轉換爲jQuery視頻教程?
- 13. 將項目轉換爲qt5和cmake未定義的引用'vtable for qt5和cmake
- 14. CMake如何將CMakeLists.txt中的shell命令轉換爲Makefile
- 15. 將qmake轉換爲cmake時的鏈接錯誤
- 16. 在CMake中將字符串的一部分轉換爲大寫
- 17. 轉換SQL教義
- 18. 是否有將NMAKE構建文件轉換爲CMAKE構建文件的轉換實用程序?
- 19. 音樂商店2教程 - VB轉換
- 20. d3地圖教程 - 轉換shp數據
- 21. 任何人都可以發佈jtidy的教程鏈接,將xhtml轉換爲xml
- 22. 如何將cmake項目轉換爲Visual Studio等效項?
- 23. 如何將.ino Arduino項目轉換爲CMake?
- 24. 使用外部庫將製作轉換爲CMake
- 25. CMake正則表達式將小寫字母轉換爲大寫
- 26. 使用Flex和Bison將Makefile轉換爲CMake
- 27. Q_OBJECT在將qmake項目轉換爲cmake時未指定類型
- 28. CMake轉換日期格式
- 29. 保存教條記錄時將日期轉換爲字符串
- 30. 將C++程序轉換爲程序集
我不想要一個自動工具。這是我正在尋找的那種確切的討論和一般建議。例如,「我喜歡爲每組configure.ac和Makefile.am文件創建一個CmakeLists.txt firl」。如果你能詳細說明這一點,我會獎賞你的獎金。 –
@KurtisNusbaum:我編輯了我的答案,詳細闡述了我所經歷的過程,包括步驟和更多指導方針。這樣更有用嗎? –
這是迄今爲止我見過的最好的。不過,我真的很想看到「如果你在Makefile.am中看到x,請在CMakeLists.txt中寫下y」。如果有人發現,請告訴我。 –