CMake 使用方法 & CMakeList.txt__cmake

來源:互聯網
上載者:User
cmake 簡介


    CMake是一個跨平台的安裝(編譯)工具,可以用簡單的語句來描述所有平台的安裝(編譯過程)。他能夠輸出各種各樣的makefile或者project檔案,能測試編譯器所支援的C++特性,類似UNIX下的automake。 CMake 使用方法

    CMake的所有的語句都寫在一個叫:CMakeLists.txt的檔案中。當CMakeLists.txt檔案確定後,可以用ccmake命令對相關 的變數值進行配置。這個命令必須指向CMakeLists.txt所在的目錄。配置完成之後,應用cmake命令產生相應的makefile(在Unix like系統下)或者 project檔案(指定用window下的相應編程工具編譯時間)。

    其基本操作流程為:

$> ccmake directory$> cmake directory$> make

其中directory為CMakeList.txt所在目錄; 第一條語句用於配置編譯選項,如VTK_DIR目錄 ,一般這一步不需要配置,直接執行第二條語句即可,但當出現錯誤時,這裡就需要認為配置了,這一步才真正派上用場; 第二條命令用於根據CMakeLists.txt產生Makefile檔案; 第三條命令用於執行Makefile檔案,編譯器,產生可執行檔;

CMake的執行就是這麼簡單,其痛點在於如何編寫CMakeLists.txt檔案,下面結合例子簡單介紹CMakeLists.txt的編寫,看下面這個CMakeLists.txt

#project namePROJECT(test_math)#head file pathINCLUDE_DIRECTORIES(include)#source directoryAUX_SOURCE_DIRECTORY(src DIR_SRCS)#set environment variableSET(TEST_MATH${DIR_SRCS})#set extern librariesSET(LIBRARIESlibm.so)#add executable fileADD_EXECUTABLE(../bin/bin ${TEST_MATH})#add link libraryTARGET_LINK_LIBRARIES(../bin/bin ${LIBRARIES}) 

或者用下面這個CMakeLists.txt
#project namePROJECT(test_math)#head file pathINCLUDE_DIRECTORIES(include)#source directoryAUX_SOURCE_DIRECTORY(src DIR_SRCS)#set environment variableSET(TEST_MATH${DIR_SRCS})#add executable fileADD_EXECUTABLE(../bin/bin ${TEST_MATH})#add link libraryTARGET_LINK_LIBRARIES(../bin/bin m)

這是一個測試數學函數的程式的CMakeLists.txt,"#"後面為注釋的內容,CMake的命令全部為大寫

第2行指定產生的工程名為test_math

第4行指定標頭檔目錄為include

第8行指定源檔案目錄為src,並將其賦值給環境變數DIR_SRCS

第10行設定環境變數TEST_MATH的值為環境變數DIR_SRCS的值,此處用於顯示如何用環境變數對環境變數進行賦值

第14行將數學函數庫賦值給環境變數LIBRARIES,當然,可以不用這個環境變數,而在後面直接使用該庫名

第18行用於指定組建檔案,將環境變數TEST_MATH目錄下的所有檔案編譯產生../bin目錄下的可執行檔bin

第20行指定../bin/bin執行時的連結庫為環境變數LIBRARIES的值-libm.so

下面給出源檔案
/src/main.c:

#include<stdio.h>#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<math.h> double get_sqrt(double var1); #endif 


 

將CMakeLists.txt放在目前的目錄下,執行CMakeLists.txt

$> cmake .$> make


 

即可產生可執行檔,在目錄/bin下的bin檔案,好了運行看其效果是否和所想一樣。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.