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,這個標頭檔案由cmake從config.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...