首页 > 其他分享 >【CMake】3.单项目单模块添加第三方依赖包示例工程

【CMake】3.单项目单模块添加第三方依赖包示例工程

时间:2024-01-13 14:04:21浏览次数:40  
标签:set CMAKE NAME 示例 MODULE PROJECT 模块 CMake


CMake 示例工程代码

https://github.com/LABELNET/cmake-simple

单项目单模块 - 添加第三方依赖示例工程

https://github.com/LABELNET/cmake-simple/tree/main/simple-deps

1. 单模块工程 + 第三方依赖

CMake 单模块工程,这是一个示例工程

  • simple-deps , 项目名称
  • cmake , 第三方依赖
  • demo , 主模块 main

2. 目录结构

$ .SIMPLE-DEPS      
│   CMakeLists.txt                 # 项目根 CMakeLists.txt , 用于项目配置
│   README.md                      # 说明文档,无关
├───.vscode                        # 头文件路径配置
│       c_cpp_properties.json
├───cmake                          # 第三方依赖文件夹
├───build                          # CMake 编译输出
└───demo                           # 主模块
    │   CMakeLists.txt             # 主模块 CMakeLists.txt                    
    ├───include                    # 源码:头文件文件夹
    │       demo_utils.h
    └───src                        # 源码: 代码文件夹
            demo_utils.cc
            main.cc

3. 项目/CMakeLists.txt

以项目编译配置为主

cmake_minimum_required(VERSION 3.18)

# 项目名称
set(PROJECT_NAME simple-deps)
project(${PROJECT_NAME} VERSION 0.1.0)

# 1.编译类型
if (NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE Release)
endif()

# 2. C++ 标准库
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

# 3. 第三方库
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake;${CMAKE_MODULE_PATH}")

# 4.工程名称
project(${PROJECT_NAME} LANGUAGES CXX)

# 5.主模块 main
add_subdirectory(demo)

# 6.打包器
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)

4. 主模块/CMakeLists.txt

第三方依赖示例,使用 OpenCV , 显示一张图片

以功能代码实现为主

cmake_minimum_required(VERSION 3.18)

# 模块名称
set(MODULE_NAME demo)

# 1.可执行文件
add_executable(${MODULE_NAME})

# 2.源码,注意: 源文件代码格式,这里用的为 .cc 文件
file(GLOB_RECURSE srcs CONFIGURE_DEPENDS src/*.cc include/*.h)

# 3.目标
target_sources(${MODULE_NAME} PUBLIC ${srcs})

# 4.头文件
target_include_directories(${MODULE_NAME} PUBLIC include)

# 5. 第三方依赖 OpenCV
find_package(OpenCV CONFIG REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
# 6. 第三方依赖 Spdlog
find_package(spdlog CONFIG REQUIRED)

# 7. Link 依赖
target_link_libraries(
    ${MODULE_NAME} 
    ${OpenCV_LIBRARIES}
    spdlog::spdlog
)

5. 运行

点击 Build ,可进行编译

点击 Run , 先进行编译,再运行。若已经编译,将直接运行

【CMake】3.单项目单模块添加第三方依赖包示例工程_CMake


标签:set,CMAKE,NAME,示例,MODULE,PROJECT,模块,CMake
From: https://blog.51cto.com/u_15976424/9232166

相关文章

  • 【CMake】2. 单项目单模块示例工程
    CMake示例工程代码https://github.com/LABELNET/cmake-simple单项目单模块示例工程https://github.com/LABELNET/cmake-simple/tree/main/simple1.单模块工程CMake单模块工程,这是一个示例工程simple,项目名称cmake,第三方依赖demo,主模块main2.目录结构$.SIMPLE......
  • 【VSCode】CMake Language Support 总是下载 .NET 超时,但又不想升级dotnet
    错误信息Error:Couldnotresolvedotnetpath!Anerroroccurredwhileinstalling.NET(6.0):.NETAcquisitionFailed:Installationfailed:Error:.NETinstallationtimedout.Youmayneedtochangethetimeouttimeifyouhaveaslowconnection.Pleasesee:h......
  • 【flink番外篇】9、Flink Table API 支持的操作示例(9)- 表的union、unionall、intersec
    Flink系列文章一、Flink专栏Flink专栏系统介绍某一知识点,并辅以具体的示例进行说明。1、Flink部署系列本部分介绍Flink的部署、配置相关基础内容。2、Flink基础系列本部分介绍Flink的基础部分,比如术语、架构、编程模型、编程指南、基本的datastreamapi用法、四大基......
  • openpyxl模块------------------------------------------统计加班时间
    #####################统计加班时间代码######################################fromopenpyxlimportWorkbook,load_workbookfromdatetimeimportdatedefcreate_data():wb=Workbook()sh=wb.activerows=[['Date','姓名','打卡时间&#......
  • 为中船710所提供芯片原子钟、铷原子钟、铷钟模块、铷钟基准
    近期中国船舶重工集团有限公司第七一〇研究所采购了一批我司自主研发的的芯片原子钟。中国船舶重工集团有限公司第七一〇研究所是中国军工科学研究单位,始建于1953年,原名中国军事科学院第七一〇研究所。该研究所的上级单位是中国军事科学院,隶属于中国科技部。该研究所设计和开发了大......
  • 1.5A 电源模块TPSM5601R5HEXTRDAR、TPSM5601R5HRDAR使用增强型 Hotrod™ QFN封装
    采用增强型Hotrod™QFN封装的TPSM5601R5Hx60V输入、1V至16V输出、1.5A电源模块器件说明:TPSM5601R5Hx电源模块是一款高度集成的1.5A电源解决方案,在热增强型QFN封装内整合了一个带有功率MOSFET的60V输入降压直流/直流转换器、一个屏蔽式电感器和多个无源器件。此......
  • 京东商品详情API实现实时数据获取的Java代码示例
    在电商行业中,商品详情页是用户了解商品信息、进行购买决策的重要页面。为了提高用户体验和促进销售,电商平台通常会提供商品详情的API接口,以便第三方应用能够实时获取商品数据。本文将介绍如何使用京东获得的JD商品详情API实现实时数据获取,并提供相应的Java代码示例。一、JD商品详......
  • Python模块安装的前提条件及步骤详解
    Python是一种功能强大的编程语言,拥有丰富的第三方模块库。在使用这些模块之前,我们需要满足一些前提条件才能进行安装。本文将介绍Python模块安装的前提条件以及详细的安装步骤。前提条件:在安装Python模块之前,需要满足以下前提条件:1.Python解释器:确保已经正确安装了Python解释器,并且......
  • 电源模块有哪些性能指标 boshida 稳定可靠 高效能转化
    电源模块有哪些性能指标boshida稳定可靠高效能转化电源模块的性能指标可以分为以下几个方面:输入电压范围:指模块能够正常工作的输入电压范围,一般以最小和最大输入电压值进行描述。输出电压精度:指模块输出电压与设定值之间的差异程度,精度越高,输出电压与设定值的差异越小。输出......
  • BOSHIDA DC电源模块技术的未来发展趋势
    BOSHIDADC电源模块技术的未来发展趋势随着科技的不断发展,DC电源模块技术也在不断演进。以下是DC电源模块技术未来发展的一些趋势: 1.高效能:未来DC电源模块的效能将得到进一步提高。通过改进转换拓扑结构、优化控制算法和使用高效能元器件,可以提高模块的转换效率。这将有助于......