当前位置: 首页 > news >正文

CMake技术细节:递归搜索目录添加源文件

初级代码游戏的专栏介绍与文章目录-CSDN博客

我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。

这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。

源码指引:github源码指引_初级代码游戏的博客-CSDN博客


        CMake如何递归搜索目录处理源文件?

循环式处理

        很常见的是写循环处理子目录,比如下面这样:

aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src COMMON_SRCS)
SUBDIRLIST(SUB_DIR_LIST ${CMAKE_CURRENT_SOURCE_DIR}/src)
foreach(SUB_DIR ${SUB_DIR_LIST})
    aux_source_directory(src/${SUB_DIR} COMMON_SRCS)
    
    SUBDIRLIST(SUB2_DIR_LIST ${CMAKE_CURRENT_SOURCE_DIR}/src/${SUB_DIR})
    foreach(SUB2_DIR ${SUB2_DIR_LIST})
        aux_source_directory(src/${SUB_DIR}/${SUB2_DIR} COMMON_SRCS)
    endforeach()
endforeach()

         这段代码先处理src目录,再处理src目录之下的两级子目录,可以想象,如果还有更多级,这个循环就复杂得没法看了。

递归式处理

        递归方式就简单多了:

file(GLOB_RECURSE srcs *.cpp)

        srcs是用来接收结果得变量的名字,如果源码是从当前目录下的src目录开始,写成“src/*.cpp”,就可以了,“*”匹配任何内容,包括子目录。

        so easy?(会者不难,不会的很头疼的)


(这里是文档结束)

http://www.dtcms.com/a/18000.html

相关文章:

  • 【C语言】C语言 停车场管理系统的设计与实现(源码)【独一无二】
  • 微信小程序日程预约
  • 第一章:认识Tailwind CSS - 第二节 - Utility First CSS 的优势与挑战
  • 深入剖析 Burp Suite:Web 应用安全测试利器
  • 哈希:LeetCode49. 字母异位词分组 128.最长连续序列
  • wps配置deepseek
  • IP属地:是否等同于当前登录位置?
  • 深度解析2025最新微服务版本特性
  • 二十九、vite项目集成webpack+vue2项目
  • C++ Primer 简单语句
  • clickhouse集群搭建
  • kotlin-kapt
  • SpringBoot+Vue+微信小程序的高校食堂点餐系统
  • 出乎意料C++
  • 服务器模式部署mediacms后卸载mediacms,包括数据库
  • App UI自动化--Appium学习--第二篇
  • VisionPro 划痕检测小练习
  • Docker 容器使用
  • STM32外设分类--最小系统引脚和GPIO引脚
  • 算法-链表篇06-链表相交
  • MaxKB本地部署celery_default is stopped
  • 【项目日记】高并发内存池--page cache
  • 05-服务保护和分布式事务(Sentinel、Seata)
  • 探索 Text-to-SQL 技术:从自然语言到数据库查询的桥梁
  • 2025年关于css面试题及其答案解析
  • GRN前沿:DGCGRN:基于有向图卷积网络的基因调控网络推理
  • 云夹书签:让阅读跨越时空
  • 【Elasticsearch】标准化器(Normalizers)
  • 常用 CNN 深度学习框架 backbone 标准代码
  • C++----多态