CMakeList笔记
-
定義
CMake是一種跨平臺(tái)編譯工具,CMake主要是編寫CMakeLists.txt文件,然后通過(guò)cmake命令將CMakeLists.txt文件轉(zhuǎn)化為make所需要的Makefile文件,最后用make命令編譯源碼生成可執(zhí)行程序或者庫(kù)文件。
-
語(yǔ)法規(guī)則
指令是大小寫無(wú)關(guān)的,參數(shù)和變量是大小寫相關(guān)的
-
CMakeLists.txt常見(jiàn)指令
1、cmake_minimum_required(VERSION 2.6)命令
#指定CMake編譯最低要求版本
例:CMAKE_MINIMUM_REQUIRED(VERSION 3.14)2、PROJECT(<projectname>)命令
#給項(xiàng)目命名
PROJECT(TEST)3、ADD_SUBDIRECTORY命令
#該命令告訴CMake去子目錄中查看可用的CMakeLists.txt文件4、ADD_EXECUTABLE命令
#將hello.cpp生成可執(zhí)行文件hello
ADD_EXECUTABLE(hello ${SOURCE})5、ADD_LIBRARY命令
#變量SRC_LIST_CPP 與SRC_LIST_C 指定生成test動(dòng)態(tài)庫(kù) 默認(rèn)生成靜態(tài)庫(kù) SHARED指定生成庫(kù)類型為動(dòng)態(tài)庫(kù)
ADD_LIBRARY(test SHARED ${SRC_LIST_CPP} ${SRC_LIST_C})
ADD_LIBRARY(test STATIC util.cpp) # 生成靜態(tài)庫(kù)6、FILE命令
#收集c/c++文件并賦值給變量SRC_LIST_CPP ${PROJECT_SOURCE_DIR}代表區(qū)當(dāng)前項(xiàng)目錄
FILE(GLOB SRC_LIST_CPP ${PROJECT_SOURCE_DIR}/src/*.cpp)7、INCLUDE_DIRECTORIES命令
#指定頭文件目錄
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/include)8、LINK_DIRECTORIES命令
#指定鏈接庫(kù)文件目錄
LINK_DIRECTORIES(${PROJECT_SOURCE_DIR}/lib)9、TARGET_LINK_LIBRARIES命令
#指定hello 鏈接庫(kù)test
TARGET_LINK_LIBRARIES(hello test)10、AUX_SOURCE_DIRECTORY命令
#AUX_SOURCE_DIRECTORY(dir VAR) 發(fā)現(xiàn)一個(gè)目錄下所有的源代碼文件并將列表存儲(chǔ)在一個(gè)變量中
AUX_SOURCE_DIRECTORY(. SRC_LIST) # 搜索當(dāng)前目錄下的所有.cpp文件,放到SRC_LIST變量中8、SET命令
#用來(lái)顯式的定義變量
例子:
#用變量代替值,例子中定義SRC_LST代替后面的字符串
SET (SRC_LST main.c test.c)
#指定生成庫(kù)文件的目錄
SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)- 常用變量
變量名含義 JECT_NAME project命令中寫的項(xiàng)目名 KE_VERSION 當(dāng)前使用CMake的版本 KE_SOURCE_DIR 工程頂層目錄,即入口CMakeLists文件所在路徑 JECT_SOURCE_DIR 同CMAKE_SOURCE_DIR KE_BINARY_DIR 工程編譯發(fā)生的目錄,即執(zhí)行cmake命令進(jìn)行項(xiàng)目配置的目錄,一般為build JECT_BINARY_DIR 同CMAKE_BINARY_DIR KE_CURRENT_SOURCE_DIR 當(dāng)前處理的CMakeLists.txt所在的路徑 KE_CURRRENT_BINARY_DIR 當(dāng)前處理的CMakeLists.txt中生成目標(biāo)文件所在編譯目錄 KE_CURRENT_LIST_FILE 輸出調(diào)用這個(gè)變量的CMakeLists.txt文件的完整路徑 KE_CURRENT_LIST_DIR 當(dāng)前處理的CMakeLists.txt文件所在目錄的路徑 KE_INSTALL_PREFIX 指定make install命令執(zhí)行時(shí)包安裝路徑 KE_MODULE_PATH find_package命令搜索包路徑之一,默認(rèn)為空 KE_BUILD_TYPE 編譯選項(xiàng),Release或者Debug,如set(CMAKE_BUILD_TYPE “Release”) KE_CXX_FLAGS 編譯標(biāo)志,設(shè)置C++11編譯,set(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -std=c++11”)
-
-
例子
總結(jié)
以上是生活随笔為你收集整理的CMakeList笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 电大计算机网考机考模拟试题答案,电大计算
- 下一篇: SSM jsp页面发送数据到servle