cmake命令

參考鏈接

1鹰霍、概念

  • cmake命令不分大小寫
  • 編譯過程
  • 編寫 CMake 配置文件 CMakeLists.txt 。
  • 執(zhí)行命令 cmake PATH 或者 ccmake PATH 生成 Makefile(ccmake 和 cmake 的區(qū)別在于前者提供了一個交互式的界面)春缕。其中睁枕, PATH 是 CMakeLists.txt 所在的目錄官边。
  • 使用 make 命令進行編譯。
cmake PATH  
make

2外遇、cmake命令

1注簿、CMKAE最低版本要求

cmake_minimum_required (version 2.8)

2、項目名稱

project(demo1)

3跳仿、指定生成目標

add_executable(demo main.cc)

4诡渴、查找目錄下所有的源文件,并把名稱保存到DIR_SRCS變量

aux_source_directory(. DIR_SRCS)

5菲语、添加子目錄

add_subdirectory(math)

6妄辩、生成鏈接庫

add_library(MathFunctions ${DIR_LIB_SRS})

7惑灵、添加鏈接庫

target_link_libraries(Demo MathFunctions)

8、添加配置文件

configure_file(
"$PROJECT_SROUCE_DIR/config.h.in"
"$PROJECT_SOURCE_DIR/config.h" 
)

9眼耀、自定義編譯選項

option (USE_MYMATH
 "Use provided math implementation"
ON
)

if(USE_MYMATH)
 include_directories("${PROJECT_SOURCE__DIR}/math")
 add_subdirectory(math)
 set(EXTRA_LIBS ${EXTRA_LIBS} MathFunctions)
endif(USE_MYMATH)

//config.h.in
#cmakedefine USE_MYMATH

//*.c文件
#ifdef USE_MYMATH
  #include "math/MathFunctions.h"
#else
  #include <math.h>
#endif

10英支、指定安裝路徑

# 指定 MathFunctions 庫的安裝路徑
install (TARGETS MathFunctions DESTINATION bin)
install (FILES MathFunctions.h DESTINATION include)

install (TARGETS Demo Destination bin)
install(FILES "${PROJECT_BINARY_DIR}/config.h" Destination include)
//默認為/usr/local/ CMAKE_INSTALL_PREFIX 

11、添加測試

//啟動測試
enable_testing()
add_test(test_name demo param1 param2)

set_tests_properties(test_5_2  PROPERTIES PASS_REGULAR_EXPEESSION "is 10000")

12哮伟、定義測試宏

macro(do_test arg1 arg2 result)
 add_test(test_${arg1}_${arg2} Demo arg1 arg2)
 set_test_properties(test_${arg1}_${arg2} PROPERTIES_PASS_REGULAR_EXPRESSION ${result})
endmacro(do_test)

13干花、支持GDB

set(CMAKE_BUILD_TYPE "debug")
set(CMKAE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -o0 -wall -g -ggdb")
set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -o3 -wall")

14、添加環(huán)境檢查

# 檢查系統(tǒng)是否支持 pow 函數(shù)
include (${CMAKE_ROOT}/Modules/CheckFunctionExists.cmake)
check_function_exists (pow HAVE_POW)

#cmakedefine HAVE_POW
#ifdef HAVE_POW
    printf("Now we use the standard library. \n");
    double result = pow(base, exponent);
#else
    printf("Now we use our own Math library. \n");
    double result = power(base, exponent);
#endif

15澈吨、添加版本號

set (Demo_VERSION_MAJOR 1)
set (Demo_VERSION_MINOR 0)

// the configured options and settings for Tutorial
#define Demo_VERSION_MAJOR @Demo_VERSION_MAJOR@
#define Demo_VERSION_MINOR @Demo_VERSION_MINOR@

#include "config.h"
printf("%s Version %d.%d\n",
            argv[0],
            Demo_VERSION_MAJOR,
            Demo_VERSION_MINOR);

16把敢、生成安裝包

//默認前綴:
CMAKE_INSTALL_PREFIX
install([FILES|TARGETS]  ${INSTALL_HEAD_FILES} DESTINATION  ${INCLUDE_OUTPUT_PATH})

17、參數(shù)傳遞

//以傳遞git信息為例
  execute_process(
    COMMAND git log -1 --pretty=format:%H
    OUTPUT_VARIABLE GIT_VERSION
    OUTPUT_STRIP_TRAILING_WHITESPACE
    ERROR_QUIET
    WORKING_DIRECTORY
      ${CMAKE_CURRENT_SOURCE_DIR}
    )
    string (REGEX REPLACE "[\n\t\r]" "" GIT_VERSION ${GIT_VERSION})
    add_definitions( -DGIT_VERSION=\"${GIT_VERSION}\")
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末谅辣,一起剝皮案震驚了整個濱河市修赞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌桑阶,老刑警劉巖柏副,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蚣录,居然都是意外死亡割择,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門萎河,熙熙樓的掌柜王于貴愁眉苦臉地迎上來荔泳,“玉大人,你說我怎么就攤上這事虐杯÷旮瑁” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵擎椰,是天一觀的道長支子。 經(jīng)常有香客問我,道長达舒,這世上最難降的妖魔是什么值朋? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮巩搏,結(jié)果婚禮上昨登,老公的妹妹穿的比我還像新娘。我一直安慰自己贯底,他們只是感情好篙骡,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般糯俗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上睦擂,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天得湘,我揣著相機與錄音,去河邊找鬼顿仇。 笑死淘正,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的臼闻。 我是一名探鬼主播鸿吆,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼述呐!你這毒婦竟也來了惩淳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤乓搬,失蹤者是張志新(化名)和其女友劉穎思犁,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體进肯,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡激蹲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了江掩。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片学辱。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖环形,靈堂內(nèi)的尸體忽然破棺而出策泣,到底是詐尸還是另有隱情,我是刑警寧澤斟赚,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布着降,位于F島的核電站,受9級特大地震影響拗军,放射性物質(zhì)發(fā)生泄漏任洞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一发侵、第九天 我趴在偏房一處隱蔽的房頂上張望交掏。 院中可真熱鬧,春花似錦刃鳄、人聲如沸盅弛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽挪鹏。三九已至见秽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間讨盒,已是汗流浹背解取。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留返顺,地道東北人禀苦。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像遂鹊,于是被迫代替她去往敵國和親振乏。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容

  • CMake 全稱“cross platform make”秉扑,是開源慧邮、跨平臺的自動化構(gòu)建系統(tǒng)。CMake 由 Kit...
    神齊閱讀 4,112評論 0 6
  • 一邻储、搜索模式 ??find_package用于查找包(通常是使用三方庫)赋咽,并返回關(guān)于包的細節(jié)(使用包所依賴的頭文件...
    Domibaba閱讀 27,510評論 0 13
  • 什么是CMake CMake是一個跨平臺的構(gòu)建工具,可以用簡單的語句來描述所有平臺的安裝(編譯過程)吨娜。能夠輸出各種...
    那就走吧玉二閱讀 574評論 0 1
  • 一脓匿、命令格式 ??該命令用于查找?guī)欤▌討B(tài)庫或者靜態(tài)庫),當構(gòu)建依賴于第三方庫/系統(tǒng)庫宦赠,可以使用該命令來查找并使用庫...
    Domibaba閱讀 37,695評論 0 7
  • @toc[cmake%E5%91%BD%E4%BB%A4%E9%80%89%E9%A1%B9%E5%8F%8A%E...
    Aron566閱讀 2,161評論 0 2