基本语法规则
- CMake要求要求工程主目录和所有存放源代码子目录下都要编写
CMakeLists.txt
文件。 - CMake变量使用
${}
方式取值,但是在IF
控制语句中是直接使用变量名 - 环境变量使用
$ENV{}
方式取值,使用SET(ENV{VAR} VALUE)
赋值
举个例子
ADD_EXECUTABLE(hello main.c;armor.c)
或者
ADD_EXECUTABLE(hello main.c armor.c)
再比如if语句
if(NOT CMAKE_SYSTEM_NAME STREQUAL Linux)
message(FATAL_ERROR "Not supported platform: ${CMAKE_SYSTEM_NAME}")
endif()
常见的指令解释
- 指定cmake的最低版本为3.10.0
cmake_minimum_required(VERSION 3.10.0)
- 指定工程采用的语言为 C++
project(WolfVision VERSION 2021.7.9 LANGUAGES CXX)
- 去子目录查看可用的CMakeLists.txt文件
add_subdirectory(3rdparty/fmt)
- 生成一个可执行文件 定义最终生成的可执行文件的文件名及参与编译的头文件和cpp文件
add_executable(WolfVision base/wolfvision.cpp)
- 指定可执行文件的存放路径
set(EXECUTABLE_OUTPUT_PATH "${PROJECT_BINARY_DIR}/bin")
- 指定库文件的存放路径
set(LIBRARY_OUTPUT_PATH "${PROJECT_BINARY_DIR}/lib")
- 设置变量
set(CMAKE_CXX_FLAGS "-Wall -Wextra -Wno-deprecated") // 设置编译器类型
set(CMAKE_CXX_FLAGS_DEBUG "-g") // 生成调试信息
set(CMAKE_CXX_FLAGS_RELEASE "-O3") // 生成Release类型
常用变量
