CMake官方版是一款構建、測試和打包軟件的跨平臺編程工具。CMake官方版是用于控制軟件使用簡單的平臺和編譯器編譯過程獨立配置文件。CMake生成本機makefile和工作區,可以使用用戶所選擇的編譯器環境。
1、CMake可以編譯源代碼、制作程序庫、產生適配器(wrapper)、還可以用任意的順序建構執行檔。
2、支持in-place建構(二進檔和源代碼在同一個目錄樹中)和out-of-place建構(二進檔在別的目錄里),因此可以很容易從同一個源代碼目錄樹中建構出多個二進檔。
3、CMake 也支持靜態與動態程式庫的建構。“CMake”這個名字是“cross platform make”的縮寫。雖然名字中含有“make”,但是CMake和Unix上常見的“make”系統是分開的,而且更為高階。
下載cmake
Windows版本安裝直接運行對應系統的EXE
LINUX版本的安裝:
安裝cmakecmake-*.*.*tar.gz為下載下來的源碼包
tar xvf cmake-*.*.*.tar.gz
cd cmake-*.*.*.
/bootstrap
make
make install
如果已經安裝了cmake,想要安裝新版本,則:
cd cmake-*.*.*
cmake .
makemake install
單個源文件工程
1、源文件編寫
假設項目test中只有一個main.cpp源文件,程序用途是計算一個數的指數冪。
#include
#include
/**
* power - Calculate the power of number.
* @param base: Base value.
* @param exponent: Exponent value.
*
* @return base raised to the power exponent.
*/
double power(double base, int exponent)
{
int result = base;
int i;
if (exponent == 0)
{
return 1;
}
for(i = 1; i < exponent; ++i)
{
result = result * base;
}
return result;
}
int main(int argc, char *argv[])
{
if(argc < 3)
{
printf("Usage: %s base exponent \n", argv[0]);
return 1;
}
double base = atof(argv[1]);
int exponent = atoi(argv[2]);
double result = power(base, exponent);
printf("%g ^ %d is %g\n", base, exponent, result);
return 0;
}
2、編寫CMakeLists.txt
在main.cpp源文件目錄test下編寫CMakeLists.txt文件。
#CMake最低版本號要求
cmake_minimum_required (VERSION 2.8)
#項目信息
project (demo)
#指定生成目標
add_executable(demomain.cpp)
CMakeLists.txt由命令、注釋和空格組成,其中命令是不區分大小寫。符號#后的內容被認為是注釋。命令由命令名稱、小括號和參數組成,參數之間使用空格進行間隔。
本例中CMakeLists.txt文件的命令如下:
cmake_minimum_required:指定運行本配置文件所需的CMake的最低版本;
project:參數值是demo,表示項目的名稱是demo。
add_executable:將名為main.cpp的源文件編譯成一個名稱為demo的可執行文件。
3、編譯工程
在源碼根目錄下創建一個build目錄,進入build目錄,執行cmake ..,生成Makefile,再使用make命令編譯得到demo可執行文件。
通常,建議在源碼根目錄下創建一個獨立的build構建編譯目錄,將構建過程產生的臨時文件等文件與源碼隔離,避免源碼被污染。
什么是組態檔?
組態檔是用一種建構軟件專用的特殊編程語言寫的CMake腳本。內建C語言、C++、Fortran、Java的自動相依性分析功能。經由CMake腳本語言支持SWIG、Qt、FLTK。內建對微軟Visual Studio .NET和過去的Visual Studio版本的支持,可以產生后綴為.dsp、.sln和.vcproj的文檔。用傳統的時間標簽偵測檔案內容的改變。支持平行建構(在多臺電腦上同時建構)在許多操作系統上進行跨平臺編譯,包括Linux、POSIX相容的系統(AIX、*BSD、HP-UX、IRIX、MinGW/MSYS、Solaris系統)、Mac OS X和微軟Windows 95/98/NT/2000/XP等。產生可以給Graphviz用的全局相依圖。已經和Dart、CTest和CPack等軟件測試和釋出的工具整合。
CMake是一個比Make工具更高級的編譯配置工具,是一個跨平臺的、開源的構建系統(BuildSystem)。CMake允許開發者編寫一種平臺無關的CMakeList.txt文件來定制整個編譯流程,然后再根據目標用戶的平臺進一步生成所需的本地化Makefile和工程文件,如:為Unix平臺生成Makefile文件(使用GCC編譯),為Windows MSVC生成projects/workspaces(使用VS IDE編譯)或Makefile文件(使用nmake編譯)。使用CMake作為項目架構系統的知名開源項目有VTK、ITK、KDE、OpenCV、OSG等。
網友評論