cmake项目使用导入静态库的方式添加源文件

1.源文件

参照cmake项目使用递归CmakeLists.txt的方式添加源文件

先构建项目结构

2.修改

1.修改main.cpp

修改include源文件的方式为

cpp 复制代码
#include "message.h"
#include "sort_algorithms.h"

2.修改CMakeLists.txt

添加如下行

cpp 复制代码
# 主程序直接依赖消息/排序工具库和链表工具库。
target_link_libraries(${PROJECT_NAME}
    PRIVATE
        message_utils
        sort_utils
)

3.修改src/utils/message/CMakeLists.txt

cpp 复制代码
file(GLOB MESSAGE_UTILS_SOURCES CONFIGURE_DEPENDS
    "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/*.cc"
    "${CMAKE_CURRENT_SOURCE_DIR}/*.cxx"
    "${CMAKE_CURRENT_SOURCE_DIR}/*.h"
    "${CMAKE_CURRENT_SOURCE_DIR}/*.hpp"
)

add_library(message_utils STATIC
    ${MESSAGE_UTILS_SOURCES}
)
target_include_directories(message_utils
    PUBLIC
    ${CMAKE_CURRENT_SOURCE_DIR}
)

# 自动扫描并添加所有子文件夹
file(GLOB ALL_ENTRIES CONFIGURE_DEPENDS
    "${CMAKE_CURRENT_SOURCE_DIR}/*"
)

foreach(ENTRY ${ALL_ENTRIES})
    if(IS_DIRECTORY ${ENTRY})
        get_filename_component(DIR_NAME ${ENTRY} NAME)
        add_subdirectory(${DIR_NAME})
    endif()
endforeach()

4.修改src/utils/sort/CMakeLists.txt

cpp 复制代码
file(GLOB SORT_UTILS_SOURCES CONFIGURE_DEPENDS
    "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/*.cc"
    "${CMAKE_CURRENT_SOURCE_DIR}/*.cxx"
    "${CMAKE_CURRENT_SOURCE_DIR}/*.h"
    "${CMAKE_CURRENT_SOURCE_DIR}/*.hpp"
)

add_library(sort_utils STATIC
    ${SORT_UTILS_SOURCES}
)
target_include_directories(sort_utils
    PUBLIC
    ${CMAKE_CURRENT_SOURCE_DIR}
)

# 自动扫描并添加所有子文件夹
file(GLOB ALL_ENTRIES CONFIGURE_DEPENDS
    "${CMAKE_CURRENT_SOURCE_DIR}/*"
)

foreach(ENTRY ${ALL_ENTRIES})
    if(IS_DIRECTORY ${ENTRY})
        get_filename_component(DIR_NAME ${ENTRY} NAME)
        add_subdirectory(${DIR_NAME})
    endif()
endforeach()
相关推荐
慧都产品智能化3 小时前
Qt 表格升级攻略:复用已有编辑器,减少重复开发
c++·qt·编辑器·qt6.3
独隅8 小时前
WebStorm macOS 安装部署与高效调优完全指南
ide·macos·webstorm
独隅19 小时前
WebStorm macOS 安装调优与实战效能全景
ide·macos·webstorm
DFT计算杂谈19 小时前
可DIY布里渊区图像绘制编辑器
人工智能·机器学习·语言模型·矩阵·编辑器
独隅1 天前
WebStorm Linux 版安装实战与核心效能展示
linux·ide·webstorm
lzj_pxxw2 天前
STM32移植FreeRTOS(Cmake+CubeMX)
vscode·stm32·嵌入式硬件
独隅2 天前
WebStorm 在 Linux 环境下的实战安装与高效开发指南
linux·ide·webstorm
modelmd2 天前
离线安装与使用 vscode Remote SSH插件
ide·vscode·ssh
独隅2 天前
WebStorm macOS 安装调优与实战效果全景
ide·macos·webstorm
Thanks_ks3 天前
【第 006 讲】搭建 PyCharm 开发环境:PyCharm 的下载与安装 | 初始设置与常用配置
ide·python·pycharm·开发工具·jetbrains·开发环境·集成开发环境