预定义
PROJECT_NAME 项目名称
CMAKE_SOURCE_DIR 最外层CMakeLists.txt的目录
PROJECT_SOURCE_DIR 当前CMakeLists.txt 所在的目录
CMAKE_CURRENT_SOURCE_DIR 当前CMakeLists.txt 所在的目录
CMAKE_CURRENT_BINARY_DIR 当前项目的编译输出目录
CMAKE_CURRENT_LIST_FILE 当前CMakeLists.txt的绝对路径
CMAKE_CURRENT_LIST_LINE 输出当前行
系统变量
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 系统名称
CAMKE_SYSTEM_NAME 不包含版本的系统名
CMAKE_SYSTEM_VERSION 系统版本
CMAKE_SYSTEM_PROCESSOR 处理器名称
UNIX 在所有的类UNIX平台为TRUE,包括OS X和cygwin
WIN32 在所有的win32平台为TRUE,包括cygwin
编译选项
//设置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 使用流程
设置最低的CMake版本
cmake_minimum_required(VERSION 3.10)
设置工程名称
project(project_name)
创建Source变量,且链接了需要编译的cpp文件
set(SOURCES main.cpp)
添加索引头文件的目录
include_directories(${DIR})
生成可执行文件
add_executable(${PROJECT_NAME} *.cpp)
add_executable(${PROJECT_NAME} ${SOURCES})
生成静态库和动态库
add_library(StaticLib src/Main.cpp) # 默认情况下生成的是静态库
add_library(StaticLib STATIC src/Main.cpp)
add_library(ShareLib SHARED src/Main.cpp)
链接静态库和动态库
target_link_libraries(hello_binary PRIVATE StaticLib)
添加子工程同时把子工程所生成的静态库链接进来
add_subdirectory(sublibrary)
target_link_libraries(${PROJECT_NAME} sublibrary)
输出消息
MESSAGE(STATUS "Message")