【CMake】
基础命令
cmake_minimum_required(VERSION 3.0.0) #构建所需cmake最低版本,一般写在开头
project(hello) #设置项目名
add_executable(可执行程序名 源文件名或目录) #生成一个可执行程序
add_library(库名称 类型 源文件1 [源文件2] …)
# 生成一个库,类型:STATIC静态,SHARED动态
set(变量名 值) # 创建一个变量,通过${变量名} 调用
set(CMAKE_CXX_STANDARD 11) # 设置C++标准
include_directories(目录) # 添加头文件查找目录
target_link_libraries(目标 库) # 链接库 为单个目标
link_libraries(库) #用于设置全局链接库,这些库会链接到之后定义的所有目标上
常用宏
使用第三方库
find_package(fmt REQUIRED) # 查找并添加fmt库
target_link_libraries(hello fmt::fmt) # 链接fmt库
Find_package(OpenCV REQUIRED) # 查找并添加opencv库
include_directories(${OpenCV_INCLUDE_DIRS})添加opencv头文件目录
target_link_libraries(armor ${OpenCV_LIBRARIES}) })# 链接opencv头文件目录
CMakeLists基本流程
CMAKE_MINIMUM_REQUIRED(VERSION 3.20) # 设置最低版本
project(d2l_cmake) # 项目名称
include_directories(${PROJECT_SOURCE_DIR}/include) # 项目查找头文件目录
add_library(cal SHARED ${PROJECT_SOURCE_DIR}/src/cal.c) # 编译库
add_library(show SHARED ${PROJECT_SOURCE_DIR}/src/show.c)
link_libraries(cal show) #设置全局链接库
add_executable(${PROJECT_NAME}
${PROJECT_SOURCE_DIR}/src/main.c) # 编译可执行
target_link_libraries(${PROJECT_NAME} cal show) #设置单个目标链接库
$ mkdir build
$ cd build
$ cmake ..
$ make
链接可执行文件
全局链接(为所有可执行链接)
写在add_executable之前!
link_libraries(cal show) #设置全局链接库
全目标链接(为指定可执行链接
写在add_executable之后!
target_link_libraries(${PROJECT_NAME} cal show)