Cmake基礎知識講解

2021-09-02 22:52:52 字數 2551 閱讀 2452

本文主要參考

1.cmake編譯原理

cmake是一種跨平台編譯工具,比make更為高階,使用起來要方便得多。cmake主要是編寫cmakelists.txt檔案,然後用cmake命令將cmakelists.txt檔案轉化為make所需要的makefile檔案,最後用make命令編譯原始碼生成可執行程式或共享庫(so(shared object))。因此cmake的編譯基本就兩個步驟:

cmake

make

cmake 指向cmakelists.txt所在的目錄,例如cmake … 表示cmakelists.txt在當前目錄的上一級目錄。cmake後會生成很多編譯的中間檔案以及makefile檔案,所以一般建議新建乙個新的目錄,專門用來編譯,例如:

mkdir build

cd build

cmake …

make

make根據生成makefile檔案,編譯程式。

2.使用cmake編譯程式

我們編寫乙個關於開平方的c/c++程式專案,即b= sqrt(a),以此理解整個cmake編譯的過程。

第1步,建立工程目錄:

$ mkdir m_sqrt

$ cd m_sqrt/

$ mkdir build include src

$ touch cmakelists.txt readme

完了以後你的工程目錄裡應該是這樣的:

同時include和src裡的是:

第2步,開始配置這個工程

在終端執行$ gedit cmakelists.txt,貼上以下**:

編寫cmakelists.txt檔案,該檔案放在和src,include的同級目錄,實際方**都可以,只要裡面編寫的路徑能夠正確指向就好了。cmakelists.txt主要包含以下的7個步驟,具體的意義,請閱讀相應的注釋。

#1.cmake verson,指定cmake版本 

cmake_minimum_required(version 3.2)

#2.project name,指定專案的名稱,一般和專案的資料夾名稱對應

project(test_sqrt)

#3.head file path,頭檔案目錄

include_directories(

include

)#4.source directory,源檔案目錄

aux_source_directory(src dir_srcs)

#5.set environment variable,設定環境變數,編譯用到的原始檔全部都要放到這裡,否則編譯能夠通過,但是執行的時候會出現各種問題,比如"symbol lookup error ***xx , undefined symbol"

set(test_math$)

#6.add executable file,新增要編譯的可執行檔案

add_executable($ $)

#7.add link library,新增可執行檔案所需要的庫,比如我們用到了libm.so(命名規則:lib+name+.so),就新增該庫的名稱

target_link_libraries($ m)

第3步,編寫**

標頭檔案b.h,如下所示:

#ifndef b_file_header_inc

#define b_fiel_header_inc

#includedouble cal_sqrt(double value);

#endif

標頭檔案b.c,如下所示:

#include "../include/b.h"

double cal_sqrt(double value)

main.c主函式,如下所示:

#include "../include/b.h"

#include int main(int argc, char** argv)

第四步、編譯和執行程式

注意進入到build裡

cd build

cmake ..

make

編譯完,在build的目錄下生成了乙個可執行的檔案test_sqrt,執行獲取結果如下:

命令:

./test_sqrt

結果:input a:49.000000

sqrt result:7.000000

基礎知識(十五)Cmake

cmake學習筆記 cmake minimum required version 2.6 cmake版本要求 project tiny cnn 設定專案名稱 set src main.c 定義變數src等於main.c add executable tiny cnn 生成可執行檔名tiny cnn ...

Python基礎知識講解

1.1 配置環境變數 將python的安裝目錄新增到系統的環境變數中,在這裡python的預設安裝路徑是 c python27,按照下面的方法將python所在路徑新增到環境變數中 我的電腦 屬性 高階 環境變數 在path變數的末尾新增 c python27即可。不同變數使用 符號分隔 在cmd中...

ECMAScript JS 基礎知識講解

下面這個方法能輸入0 1 2 9嗎?顯然是不可以的,輸出結果是10個10。function test return arr var arrs test for var j 0 j arrs.length j 利用立即執行函式把0到9輸出。這種寫法沒什麼意義,還不如直接寫個for迴圈 function...