CMake編譯是一款可以方便用戶進(jìn)行打包測(cè)試以及構(gòu)建編程服務(wù)等功能的一款輔助工具,用于構(gòu)建、測(cè)試和打包軟件,用于控制軟件使用簡(jiǎn)單的平臺(tái)和編譯器編譯過程獨(dú)立配置文件,他能夠輸出各種各樣的makefile或者project文件,能測(cè)試編譯器所支持的C++特性,類似UNIX下的automake??梢跃幾g源代碼、制作程式庫、產(chǎn)生適配器(wrapper)、還可以用任意的順序建構(gòu)執(zhí)行檔,幫助用戶們實(shí)現(xiàn)最佳的編譯器環(huán)境的設(shè)置,讓你能夠更好的進(jìn)行各類編程開發(fā)服務(wù),支持獨(dú)立文件的配置功能,更好的解決各類編程問題!
cmake下載安裝使用介紹
CMake是一個(gè)跨平臺(tái)的安裝(編譯)工具,可以用簡(jiǎn)單的語句來描述所有平臺(tái)的安裝(編譯過程)。
cmake教程
運(yùn)行GUI的cmake界面:
執(zhí)行Configure:
運(yùn)行之后,生成了如下文件:
生成Makefile:
執(zhí)行Generate之后生成如下文件:
運(yùn)行make進(jìn)行編譯:
編譯完成后,在build目錄生成Tutorial.exe,運(yùn)行Tutorial.exe 25就可以看到運(yùn)行結(jié)果:
運(yùn)行make install安裝程序:
運(yùn)行make test進(jìn)行測(cè)試:
特色
CMake是一款免費(fèi)實(shí)用的編程工具,旨在構(gòu)建、測(cè)試和軟件打包。該軟件是用于控制軟件使用簡(jiǎn)單的平臺(tái)和編譯器編譯過程獨(dú)立配置文件。CMake生成本機(jī)makefile和工作區(qū),可以使用您所選擇的編譯器環(huán)境。
CMake 使用方法
CMake的所有的語句都寫在一個(gè)叫:CMakeLists.txt 的文件中。當(dāng)CMakeLists.txt文件確定后,可以用ccmake命令對(duì)相關(guān) 的變量值進(jìn)行配置。這個(gè)命令必須指向CMakeLists.txt所在的目錄。配置完成之后,應(yīng)用cmake命令生成相應(yīng)的makefile(在Unix like系統(tǒng)下)或者 project文件(指定用window下的相應(yīng)編程工具編譯時(shí))。
其基本操作流程為:
$> ccmake directory
$> cmake directory
$> make
其中directory為CMakeList.txt所在目錄;
第一條語句用于配置編譯選項(xiàng),如VTK_DIR目錄 ,一般這一步不需要配置,直接執(zhí)行第二條語句即可,但當(dāng)出現(xiàn)錯(cuò)誤時(shí),這里就需要認(rèn)為配置了,這一步才真正派上用場(chǎng);
第二條命令用于根據(jù)CMakeLists.txt生成Makefile文件;
第三條命令用于執(zhí)行Makefile文件,編譯程序,生成可執(zhí)行文件;
CMake的執(zhí)行就是這么簡(jiǎn)單,其難點(diǎn)在于如何編寫CMakeLists.txt文件,下面結(jié)合例子簡(jiǎn)單介紹CMakeLists.txt的編寫,看下面這個(gè)CMakeLists.txt
#project name
PROJECT(test_math)
#head file path
INCLUDE_DIRECTORIES(
include
)
#source directory
AUX_SOURCE_DIRECTORY(src DIR_SRCS)
#set environment variable
SET(TEST_MATH
${DIR_SRCS}
)
#set extern libraries
SET(LIBRARIES
libm.so
)
#add executable file
ADD_EXECUTABLE(../bin/bin ${TEST_MATH})
#add link library
TARGET_LINK_LIBRARIES(../bin/bin ${LIBRARIES})
或者用下面這個(gè)CMakeLists.txt
#project name
PROJECT(test_math)
#head file path
INCLUDE_DIRECTORIES(
include
)
#source directory
AUX_SOURCE_DIRECTORY(src DIR_SRCS)
#set environment variable
SET(TEST_MATH
${DIR_SRCS}
)
#add executable file
ADD_EXECUTABLE(../bin/bin ${TEST_MATH})
#add link library
TARGET_LINK_LIBRARIES(../bin/bin m)
這是一個(gè)測(cè)試數(shù)學(xué)函數(shù)的程序的CMakeLists.txt,"#"后面為注釋的內(nèi)容,CMake的命令全部為大寫
第2行指定生成的工程名為test_math
第4行指定頭文件目錄為include
第8行指定源文件目錄為src,并將其賦值給環(huán)境變量DIR_SRCS
第10行設(shè)定環(huán)境變量TEST_MATH的值為環(huán)境變量DIR_SRCS的值,此處用于顯示如何用環(huán)境變量對(duì)環(huán)境變量進(jìn)行賦值
第14行將數(shù)學(xué)函數(shù)庫賦值給環(huán)境變量LIBRARIES,當(dāng)然,可以不用這個(gè)環(huán)境變量,而在后面直接使用該庫名
第18行用于指定生成文件,將環(huán)境變量TEST_MATH目錄下的所有文件編譯生成../bin目錄下的可執(zhí)行文件bin
第20行指定../bin/bin執(zhí)行時(shí)的鏈接庫為環(huán)境變量LIBRARIES的值-libm.so
下面給出源文件
/src/main.c:
#include
#include"../include/a.h"
int main()
{
double b=25.0;
double a=0.0;
a=get_sqrt(b);
printf("a is %lf, b is %lf\n",a,b);
return 0;
}
/src/a.c
#include"../include/a.h"
double get_sqrt(double var1)
{
return sqrt(var1);
}
/include/a.h
#ifndef A_FILE_HEADER_INC
#define A_FILE_HEADER_INC
#include
double get_sqrt(double var1);
#endif
將CMakeLists.txt放在當(dāng)前目錄下,執(zhí)行CMakeLists.txt
$> cmake .
$> make
即可生成可執(zhí)行文件,在目錄/bin下的bin文件,好了運(yùn)行看其效果是否和所想一樣。
使用說明
1、支持繁雜的大中型構(gòu)建自然環(huán)境。早就在好多個(gè)工程項(xiàng)目中獲得認(rèn)證2、形成當(dāng)?shù)貥?gòu)建文件(比如,UNIX里的MaxFipe文件;MSVisualC++里的辦公空間/新項(xiàng)目)。因而,規(guī)范專用工具可用作一切服務(wù)平臺(tái)/編譯程序配備
3、強(qiáng)悍的指令包含精準(zhǔn)定位文件、庫、可操作文件的能力;包含封裝形式規(guī)范作用的內(nèi)部文件;測(cè)試系統(tǒng)的插口;支持遞歸算法文件目錄賦值與自變量傳承;能夠運(yùn)作外界程序流程;支持標(biāo)準(zhǔn)構(gòu)建;支持正則匹配擴(kuò)展這些
4、支持就地和外地構(gòu)建。從一個(gè)源樹可以有好幾個(gè)編譯程序樹
5、能夠很方便地?cái)U(kuò)展以加上特色功能
6、是開源代碼的
7、應(yīng)用設(shè)計(jì)成與圖型在線編輯器接口緩存文件來操作。緩存文件給予可供選擇的互動(dòng)而有標(biāo)準(zhǔn)地操縱形成全過程
以上便是WinWin7小編給大家分享介紹的CMake編譯神器!
下一篇:PB反編譯器(PBKiller)