CMakeList笔记
-
定義
CMake是一種跨平臺編譯工具,CMake主要是編寫CMakeLists.txt文件,然后通過cmake命令將CMakeLists.txt文件轉(zhuǎn)化為make所需要的Makefile文件,最后用make命令編譯源碼生成可執(zhí)行程序或者庫文件。
-
語法規(guī)則
指令是大小寫無關(guān)的,參數(shù)和變量是大小寫相關(guān)的
-
CMakeLists.txt常見指令
1、cmake_minimum_required(VERSION 2.6)命令
#指定CMake編譯最低要求版本
例:CMAKE_MINIMUM_REQUIRED(VERSION 3.14)2、PROJECT(<projectname>)命令
#給項目命名
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動態(tài)庫 默認(rèn)生成靜態(tài)庫 SHARED指定生成庫類型為動態(tài)庫
ADD_LIBRARY(test SHARED ${SRC_LIST_CPP} ${SRC_LIST_C})
ADD_LIBRARY(test STATIC util.cpp) # 生成靜態(tài)庫6、FILE命令
#收集c/c++文件并賦值給變量SRC_LIST_CPP ${PROJECT_SOURCE_DIR}代表區(qū)當(dāng)前項目錄
FILE(GLOB SRC_LIST_CPP ${PROJECT_SOURCE_DIR}/src/*.cpp)7、INCLUDE_DIRECTORIES命令
#指定頭文件目錄
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/include)8、LINK_DIRECTORIES命令
#指定鏈接庫文件目錄
LINK_DIRECTORIES(${PROJECT_SOURCE_DIR}/lib)9、TARGET_LINK_LIBRARIES命令
#指定hello 鏈接庫test
TARGET_LINK_LIBRARIES(hello test)10、AUX_SOURCE_DIRECTORY命令
#AUX_SOURCE_DIRECTORY(dir VAR) 發(fā)現(xiàn)一個目錄下所有的源代碼文件并將列表存儲在一個變量中
AUX_SOURCE_DIRECTORY(. SRC_LIST) # 搜索當(dāng)前目錄下的所有.cpp文件,放到SRC_LIST變量中8、SET命令
#用來顯式的定義變量
例子:
#用變量代替值,例子中定義SRC_LST代替后面的字符串
SET (SRC_LST main.c test.c)
#指定生成庫文件的目錄
SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)- 常用變量
變量名含義 JECT_NAME project命令中寫的項目名 KE_VERSION 當(dāng)前使用CMake的版本 KE_SOURCE_DIR 工程頂層目錄,即入口CMakeLists文件所在路徑 JECT_SOURCE_DIR 同CMAKE_SOURCE_DIR KE_BINARY_DIR 工程編譯發(fā)生的目錄,即執(zhí)行cmake命令進(jìn)行項目配置的目錄,一般為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)用這個變量的CMakeLists.txt文件的完整路徑 KE_CURRENT_LIST_DIR 當(dāng)前處理的CMakeLists.txt文件所在目錄的路徑 KE_INSTALL_PREFIX 指定make install命令執(zhí)行時包安裝路徑 KE_MODULE_PATH find_package命令搜索包路徑之一,默認(rèn)為空 KE_BUILD_TYPE 編譯選項,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笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电大计算机网考机考模拟试题答案,电大计算
- 下一篇: python迭代器问题