1.cmake_minimum_required(VERSION 3.2) 指定最低cmake版本git
2.project(project_name) 指定項目的名稱,通常和項目到文件夾對應github
project_binary_dir(cmake_binary_dir) 路徑/build
project_source_dir(cmake_source_dir) 路徑/src
系統信息web
1,CMAKE_MAJOR_VERSION,CMAKE 主版本號,好比 2.4.6 中的 2
2,CMAKE_MINOR_VERSION,CMAKE 次版本號,好比 2.4.6 中的 4
3,CMAKE_PATCH_VERSION,CMAKE 補丁等級,好比 2.4.6 中的 6
4,CMAKE_SYSTEM,系統名稱,好比 Linux-2.6.22
5,CMAKE_SYSTEM_NAME,不包含版本的系統名,好比 Linux
6,CMAKE_SYSTEM_VERSION,系統版本,好比 2.6.22
7,CMAKE_SYSTEM_PROCESSOR,處理器名稱,好比 i686.
8,UNIX,在全部的類 UNIX 平臺爲 TRUE,包括 OS X 和 cygwin
9,WIN32,在全部的 win32 平臺爲 TRUE,包括 cygwin
cmake_minimum_required(version 3.2)
project(example)
include_directories("/usr/include") //程序頭文件的位置
link_directories("/usr/lib") //程序庫文件的位置
add_executable(example example.cpp) //編譯example.cpp 生成 example 對象文件
target_link_libraries(example gsl) //連接lib庫文件到example 對象文件
在連接階段,會將彙編生成到目標文件與引用到到庫一塊兒連接打包到可執行文件中。所以對應到連接方式稱爲靜態連接。
靜態庫對函數庫到連接時放在編譯時期完成到。
程序在運行時與函數毫無瓜葛,移植方便。
浪費空間和資源,全部相關到目標文件與牽涉到的函數庫被連接合成一個可執行文件。
過程:
1、將代碼文件編譯爲目標文件 file.o
2、經過工具將目標文件打包成 .a靜態庫文件
3、生成file.a
針對於靜態庫到問題:空間浪費、靜態庫對程序到更新等會帶來麻煩
動態庫在程序編譯時並不會被鏈接到目標代碼到中,而是在程序運行時才被載入。不一樣到應用程序若是調用相同到庫,那麼,在內存裏只有一份實例,避免空間浪費。用戶可增量跟新動態庫。
過程:
1、生成目標文件
2、生成動態庫