一、CMake的介绍
CMake是跨平台的自动化构建系统生成工具,文件是CMakeLists.txt
二、简单的CMake脚本
# CMake最低版本
cmake_minimun_required(VERSION 3.0)
# 工程名称
project(MyProject)
# 头文件路径,对应makefile的-I
include_directories(${PROJECT_SOURCE_DIR}/include)
# 指定路径搜索源文件-方法1
aux_source_directory(${PROJECT_SOURCE_DIR}/src SRC)
# 指定路径搜索源文件-方法2
file(GLOB SRC ${PROJECT_SOURCE_DIR}/src/*.c)
# 设置C++标准
set(CMAKE_CXX_STANDARD 11)
# 指定链接库文件路径(动态+静态)
link_directories(${PROJECT_SOURCE_DIR}/lib)
# 链接静态库
link_libraries(calc)
# 设置生成文件路径
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build)
# 设置可执行程序
add_executable(app ${SRC})
# 链接动态库
target_link_libraries(calc)
# 设置库文件的存储路径
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
# 生成静态库
add_library(calc STATIC ${SRC})
# 生成动态库
add_library(calc SHARED ${SRC})
三、脚本介绍
- PROJECT_SOURCE_DIR表示CMakeLists.txt的路径
- 链接动态库时,将target_link_libraries放到add_executable后边
四、其他语法介绍
# STATUS 非重要消息
# FATAL_ERROR 致命错误CMake退出
message([STATUS|WARNING|AUTHOR_WARNING|FATAL_ERROR|SEND_ERROR] "message to display" ...)
# 使用set做变量拼接
set(变量名1 ${变量名1} ${变量名2} ...)
# 使用list做字符串拼接
list(APPEND <list> [<element> ...])
# 使用list做字符串移除
list(REMOVE_ITEM <list> <value> [<value> ...])
# CMake中定义宏
add_definitions(-DDEBUG)
