標籤:
維基百科介紹“CMake是個開源的跨平台自動化建構系統,它用設定檔控制建構過程(build process)的方式和Unix的Make相似,只是CMake的設定檔取名為CMakeLists.txt。Cmake並不直接建構出最終的軟體,而是產生標準的建構檔(如Unix的Makefile或WindowsVisual C++的projects/workspaces),然後再依一般的建構方式使用。這使得熟悉某個整合式開發環境(IDE)的開發人員可以用標準的方式建構他的軟體,這種可以使用各平台的原生建構系統的能力是CMake和SCons等其他類似系統的區別之處。”
1. CMake安裝
https://cmake.org/download/, windows下載cmake-3.5.2-win32-x86.msi
安裝後的介面
2. Hello World Example
假設你建立了檔案夾 E:\Playground\CMakeExamples\HelloWorld,下面有一個檔案HelloWorld.cpp
#include <iostream> int main(){ std::cout<<"Hello World!"<<std::endl; return 0;}
在同一檔案夾下面建立CMakeLists.txt檔案
cmake_minimum_required(VERSION 3.0)
project (hello)
add_executable(hello helloworld.cpp)
- 第一行設定需要的CMake最低版本號碼,一般設定為你目前使用的CMake版本號碼,便於後續維護工作。
- 第二行設定project名字
- 第三行add_executable,第一個參量為產生可執行檔名字,取決於所在平台會產生hello.exe,或者hello.a或其他格式。第二個參量為所需要的源檔案清單。
圖形介面下運行:
在Where is the source code後面填寫CMakeLists.txt所在檔案夾,注意是CMakeLists.txt所在檔案夾,不是HelloWorld.cpp所在檔案夾。後面例子會講到源檔案與CMakeLists不在同一目錄下的情形。
Where to build the binaries: 可以是任意一個檔案夾,保持產生的專案檔,這裡我選擇產生在Build檔案夾下。設定後點擊 Configure後你需要選擇項目產生器,這裡我選擇Visual Studio 14 2015 Win64
點擊Finish後
CMake自動化佈建各種變數,不用理會紅色部分,點擊Generate,在Build檔案夾下面會產生
產生了hello.sln,project呢,除了hello.vcxproj還有ALL_BUILD.vcxproj和ZERO_CHECK.vcxproj。
stackoverflow上給的答案是
After some more searching, I found the answer at https://cmake.org/pipermail/cmake/2008-November/025448.html:
Armin Berres — 11/22/2008, 3:12:41 PM
ZERO_CHECK will rerun cmake. You can/should execute this after changing something on your CMake files.
ALL_BUILD is simply a target which builds all and everything project in the active solution, I guess one can compare it to "make all".
你可以用visual studio開啟hello.sln,編譯,運行。這裡我們用msbuild編譯。如果命令列提示msbuild無法找到,請先添加C:\Windows\Microsoft.NET\Framework64\v4.0.30319到系統PATH變數中。
在Build目錄下,運行
msbuild hello.vcxproj
運行Debug\hello.exe,查看輸出。
如果要編譯成Release,運行
msbuild /p:Configuration=Release hello.vcxproj
windows下CMake使用圖文手冊 Part 1