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()
相关推荐
sunoo-2292 小时前
C 语言文件 IO 全攻略:从基础函数到实战踩坑(BMP 读取 + 词典查询)
linux·c语言·前端·笔记·vscode·学习
慕容引刀3 小时前
或许你真的需要这个Git神器:让团队提交文案终于对齐了
人工智能·git·vscode·自然语言处理·github
●VON3 小时前
芯稿 MarkDeck 使用指南:用 Markdown 写出可编辑的 PPT
华为·编辑器·powerpoint·harmonyos·鸿蒙
00后程序员张4 小时前
iOS 开发全流程需要哪些工具?编码、调试、构建、发布阶段选择
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
nicehuai4 小时前
烧录、查变量、看日志、调驱动:H-FlashScope搞定嵌入式下载调试的瑞士军刀
ide·vscode·visual studio
CSDN1211017 小时前
麒麟 V10 安装 Node-RED、IEC 104 协议插件及界面汉化
linux·编辑器·vim
起名真的太难了1 天前
Vim基本操作与Ollama部署指南
linux·编辑器·vim
sunoo-2291 天前
【C 语言标准 IO 入门】第二天学习笔记:文件操作核心函数 + 实战案例 + 踩坑合集
linux·笔记·vscode·学习
2501_916008891 天前
Swift多环境配置:利用Scheme实现灵活的多环境管理
开发语言·ide·vscode·ios·个人开发·swift·敏捷流程
小妖同学学AI1 天前
GitHub上16k星的“未来编辑器”:像Notion一样排版,像ChatGPT一样自动续写
编辑器·github·notion