CMake 常用命令记录

预定义

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")

你可能感兴趣的:(CMake 常用命令记录)