學習CMake使用

2021-09-14 00:27:04 字數 2939 閱讀 2820

mkdir buidl && cd build && cmake .. && make

./***

編寫cmakelists.txt

cmake_minimum_required(version 2.8)

project(demo)

# 可執行檔案的名稱

add_executable(main main.c)

在前面cmakelists.txt基礎上做一下修改

# 子目錄的cmakelists

aux_source_directory(. dir_lib_srcs)

add_library(mmath $)

# 根目錄的cmakelists

cmake_minimum_required(version 2.8)

proejct(demo)

aux_source_directory(. dir_srcs)

add_subdirectory(mmath)

include_directories(mmath) #這樣在main.c中直接 include"mmath.h"即可, 不用自己找目錄了.

add_executable(main $)

target_link_libraries(main mmath) ## link到子目錄的鏈結檔案

cmake_minimum_required(version 2.8)

project(demo)

configure_file(

# cmake根據config.h.in生成config.h配置檔案

"$/config.h.in"

"$/config.h"

)# 對編譯選項的說明, 以及預設值

option(use_mmath

"use provide implementation mmath" on)

# 開啟了use_mmath的配置說明

if(use_mmath)

include_directories("$/mmath")

add_subdirectory(mmath)

#  能找到config.h所在的目錄, 可以直接include"config.h"

include_directories("$")

set (extra_libs $ mmath)

endif(use_mmath)

aux_source_directory(. dir_srcs)

add_executable(main $)

target_link_libraries(main $)

檔案中configure_file命令用於生成配置標頭檔案config.h,這個標頭檔案由cmakeconfig.h.in中生成,config.h.in這個檔案裡面有使用者自己定義的編譯選項,其中use_mmath就是定義在檔案config.h.in中,這裡使用命令option預設開啟這個選項,然後後面的 if 語句根據use_mmath變數的值來決定是否使用我們自己的編寫的數學函式庫,由於use_mmath為on,所以預設是使用我們自己的庫.

#include#include#include"config.h"

#ifdef use_mmath

#include "mmath.h"

#endif

int main()

#ifndef mmath_h

#define mmath_h

double power(int base, int exp);

#endif

#include"mmath.h"

double power(int base, int exp) else

}int flag = 0, i = 0;

if(exp < 0)

int res = base;

for(i=1; i我們先用cmake生成,  在使用ccmake進行互動式的調整option,通過上下鍵選擇option,c做儲存, g是完成並聲稱makefile, 接下來我們就可以執行了. 截圖如下

CMake學習 四 使用變數

cmake同樣可以使用變數,比如當依賴檔案過多或需要生成的專案繁雜,就可以使用變數統一管理,也便於以後的條件編譯。一 定義變數 cmake 定義變數分顯式和隱式兩種。顯式定義即使用 set 等語句,可以自定義變數名稱。隱式定義是在使用其他語句時自動建立的變數,如 project 是定義專案名稱的,但...

初步學習CMake的使用

初步學習cmake的使用 這幾天研究了一下cmake,因為感覺在之後的開發中,我們終有一天需要這個工具。cmake cmake 不再使你在構建專案時鬱悶地想自殺了.一位kde開發者。1,背景知識 cmake 是 kitware 公司以及一些開源開發者在開發幾個工具套件 vtk 的過程中衍生品,最終形...

CMAKE的學習筆記 初始CMAKE

cmake是乙個很強大的編譯工具 最近在看brpc,發現其中的編譯部分都是cmake來完成的,在囫圇吞棗編譯出第乙個demo後,我覺得自己該學習一下cmake了。1 及其簡單的例子 任何東西都是從hello world開始的,cmake也不例外,這裡就是乙個非常簡單的cmake 請注意,檔名必須是c...