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()
相关推荐
我要神龙摆尾6 小时前
IDEA 阅读插件
java·ide·intellij-idea·idea-plugs·plugs
梦幻通灵10 小时前
IDEA 实用快捷键【持续更新】
java·ide·intellij-idea
星辰徐哥21 小时前
鸿蒙平台 KDevelop 集成开发环境适配实战:基于 Electron 壳方案的跨平台多语言代码编辑器开发
electron·编辑器·harmonyos
风华同学1 天前
vscode远程连接
ide·vscode·编辑器
sunoo-2291 天前
【嵌入式 ARM 学习第十二天】SPI 裸机驱动 + I2C 触摸屏驱动 + 三大串行协议深度对比
arm开发·笔记·vscode·学习·imx6ull
kiss strong1 天前
idea显示前进后退按钮
java·ide·intellij-idea
ShuiShenHuoLe1 天前
Visual Studio 2022 Community 下载指南
ide·visual studio
Sunny_GMF1 天前
所见即所得编辑器原理实战:源码与渲染永不失真的三层一致性设计(Markdown/CodeMirror 装饰)
microsoft·编辑器·ai编程·harmonyos
一路向北he2 天前
trae或者vscode定义了文件,但是文件不亮是灰的
ide·vscode·编辑器
bro_Java6662 天前
《栈与队列:数据结构的“双生花”》
java·数据结构·编辑器