【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(库) #用于设置全局链接库,这些库会链接到之后定义的所有目标上

常用宏

image

使用第三方库

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)
posted @ 2024-11-04 20:26  White_ink  阅读(16)  评论(0)    收藏  举报