預(yù)定義
PROJECT_NAME 項目名稱
CMAKE_SOURCE_DIR 最外層CMakeLists.txt的目錄
PROJECT_SOURCE_DIR 當(dāng)前CMakeLists.txt 所在的目錄
CMAKE_CURRENT_SOURCE_DIR 當(dāng)前CMakeLists.txt 所在的目錄
CMAKE_CURRENT_BINARY_DIR 當(dāng)前項目的編譯輸出目錄
CMAKE_CURRENT_LIST_FILE 當(dāng)前CMakeLists.txt的絕對路徑
CMAKE_CURRENT_LIST_LINE 輸出當(dāng)前行
系統(tǒng)變量
CMAKE_MAJOR_VERSION cmake主版本號,如3.8.5中的3
CMAKE_MINOR_VERSION cmake次版本號,如3.8.5中的8
CMAKE_PATCH_VERSION cmake補丁等級义钉,如3.8.5中的5
CMAKE_SYSTEM 系統(tǒng)名稱
CAMKE_SYSTEM_NAME 不包含版本的系統(tǒng)名
CMAKE_SYSTEM_VERSION 系統(tǒng)版本
CMAKE_SYSTEM_PROCESSOR 處理器名稱
UNIX 在所有的類UNIX平臺為TRUE,包括OS X和cygwin
WIN32 在所有的win32平臺為TRUE,包括cygwin
編譯選項
//設(shè)置c++版本
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -Wall")
//set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ")
CMakeList 使用流程
設(shè)置最低的CMake版本
cmake_minimum_required(VERSION 3.10)
設(shè)置工程名稱
project(project_name)
創(chuàng)建Source變量洒试,且鏈接了需要編譯的cpp文件
set(SOURCES main.cpp)
添加索引頭文件的目錄
include_directories(${DIR})
生成可執(zhí)行文件
add_executable(${PROJECT_NAME} *.cpp)
add_executable(${PROJECT_NAME} ${SOURCES})
生成靜態(tài)庫和動態(tài)庫
add_library(StaticLib src/Main.cpp) # 默認(rèn)情況下生成的是靜態(tài)庫
add_library(StaticLib STATIC src/Main.cpp)
add_library(ShareLib SHARED src/Main.cpp)
鏈接靜態(tài)庫和動態(tài)庫
target_link_libraries(hello_binary PRIVATE StaticLib)
添加子工程同時把子工程所生成的靜態(tài)庫鏈接進(jìn)來
add_subdirectory(sublibrary)
target_link_libraries(${PROJECT_NAME} sublibrary)
輸出消息
MESSAGE(STATUS "Message")