CMake1:HelloWorld
生活随笔
收集整理的這篇文章主要介紹了
CMake1:HelloWorld
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.Background
CMake是一個跨平臺的安裝(編譯)工具,可以用簡單的語句來描述所有平臺的安裝(編譯過程)。他能夠輸出各種各樣的makefile或者project文件,能測試編譯器所支持的C++特性,類似UNIX下的automake。只是 CMake 的組態檔取名為 CmakeLists.txt。Cmake 并不直接建構出最終的軟件,而是產生標準的建構檔(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建構方式使用。這使得熟悉某個集成開發環境(IDE)的開發者可以用標準的方式建構他的軟件,這種可以使用各平臺的原生建構系統的能力是 CMake 和 SCons 等其他類似系統的區別之處。 官方網站參考:https://cmake.org/- 開放源代碼,使用類BSD許可發布;
- 跨平臺,可以生成native編譯配置文件,在Unix/Linux平臺生成Makefile,在MacOS生成xcode,在Windows平臺生成MSVC的工程文件;
- 能夠管理大型項目,如KDE4這一類巨型項目;
- 簡化便以構建過程和編譯過程。Cmake的工具鏈非常簡單:Cmake+make;
- 可拓展,可以為Cmake編寫特定功能的模塊,擴充Cmake功能;
2.HelloWorld
目標:Windows下采用CMake生成HelloWorld解決方案及可執行文件 準備:Windows-32bit、CMake、Visual Studio2010(實驗室閑置的機子~)2.1 設置測試目錄
比如E:/CmakePro/t1里面有兩個文件:- CMakeLists.txt
- main.c
2.2 CMake組建安裝
CMake設置如下,最主要的就是Source...和Build...:假設代碼沒有錯誤,Configure和Generate會順利通過,如果中途報錯,這時就要仔細檢查我們的CMakeLists.txt代碼! CMake之后我們會發現,該目錄下多了一個built文件夾,如下:
這個文件夾就是我們真正意義上組建好的工程文件夾,里面有平臺適應性的“解決方案”。例如,Windows下面就是‘*.sln’,如下:
2.3 Visual Studio編譯
然后,用Visual Studio2010打開HELLO.sln,內容如下:這個就是CMake幫我們組建好的工程,我們需要進一步進行調試。 對ALL_BUILD工程進行編譯,如果main.c文件代碼沒有錯,這一步也很容易通過。 編譯后的build文件內容如下:
應用程序*.exe文件就在Debug目錄下:
這只是應用CMake進行跨平臺項目管理的一個很小的例子,很核心。即使包括Slicer在內的巨型應用程序,其組建過程也不過大同小異。
3.簡單的解釋
3.1 PROJECT指令
語法:PROGECT(projectname [CXX] [C] [Java]) 可以用這個指令定義工程名稱,支持的語言列表是可以忽略的,默認情況下就是表示支持所有的語言。 這個指令隱式地定義了兩個Cmake變量: <projectname>_BINARY_DIR以及<projectname>_SOURCE_DIR。在本實驗中就是HELLO_BINARY_DIR/HELLO_SOURCE_DIR。所以下聯的兩個MESSAGE指令可以直接調用這兩個變量。3.2 MESSAGE指令
語法:MESSAGE([SEND_ERROR | STATUS | FATAL_ERROR] "message to display"...)這個指令用于向終端輸出用戶定義的信息,包含了三種類型:
- SEND_ERROR,產生錯誤,生成過程被跳過
- SATUS,輸出前綴為-的信息
- FATAL_ERROR,立即終止所有 cmake 過程
3.3 ADD_EXECUTABLE指令
ADD_EXECUTABLE(HELLO ?${SRC_LIST})定義了這個工程會生成一個文件名為 HELLO的可執行文件,相關的源文件是 SRC_LIST 中定義的源文件列表, 本例中可以直接寫成 ADD_EXECUTABLE(HELLO ?main.c)總結
以上是生活随笔為你收集整理的CMake1:HelloWorld的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++中用vectors改进内存的再分配
- 下一篇: 今天开始学习ASP