${CMAKE_CURRENT_SOURCE_DIR} 当前正在处理的源代码目录的完整路径
${CMAKE_BINARY_DIR} 当前项目的构建目录
${CMAKE_CURRENT_LIST_DIR} 当前处理的 CMakeLists.txt 文件所在的目录的完整路径
include_directories 用于向编译器添加头文件目录
add_subdirectory 添加子目录
add_dependencies 添加依赖文件
set_property 设置属性
get_filename_component 用于从路径中获取指定的部分,如目录路径、文件名、文件扩展名等
CMAKE_MINIMUM_REQUIRED(VERSION 3.8) //需要的最低版本
project (Hello) //工程名
//指定变量
SET (SOURCES
src/hello.cpp
src/main.cpp
)
//⽣成可执⾏⽂件
ADD_EXECUTABLE(Hello ${SOURCES})
//将编译结果将存放在build/src ⽬录
ADD_SUBDIRECTORY(src bin)
/指定头文件目录
TARGET_INCLUDE_DIRECTORIES(Hello
PRIVATE
${PROJECT_SOURCE_DIR}/include
)
/构建静态库、动态库
ADD_LIBRARY(hello_library STATIC/SHARED
src/hello.cpp
)
//为库设置别名
ADD_LIBRARY(hello::library ALIAS hello_library)
ADD_EXECUTABLE(Hello_bin
src/main.cpp
)
//将静态库添加进可执行文件
TARGET_LINK_LIBRARIES(Hello_bin
PRIVATE
hello::library
)
//安装库、头文件、可执行文件配置等
INSTALL (TARGETS Hello_bin DESTINATION bin )
INSTALL (TARGETS hello_library DESTINATION lib)
INSTALL (DIRECTORY ${PROJECT_SOURCE_DIR}/include DESTINATION include)
INSTALL (FILES hello.conf DESTINATION etc)