当前位置: 首页 > 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?(会者不难,不会的很头疼的)


(这里是文档结束)

相关文章:

  • 【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-链表相交
  • 人民日报评“组团退演出服”:市场经济诚信原则需全社会维护
  • 比尔·盖茨:未来20年通过盖茨基金会捐出几乎全部财富,2045年底基金会停止运营
  • 苹果Safari浏览器上的搜索量首次下降
  • 化学家、台湾地区“中研院”原学术副院长陈长谦逝世
  • 圆桌丨权威专家解读中俄关系:在新形势下共同应对挑战、共创发展机遇
  • 又一日军“慰安妇”制度受害者去世,大陆在世幸存者仅7人