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

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.kler.cn/a/546010.html

相关文章:

  • ESP32-C3
  • React中Fragment的使用
  • 自己搭建可以和deepseek对话的WEB应用
  • DeepSeek助力:打造属于你的GPTs智能AI助手
  • C++-----------酒店客房管理系统
  • 【设计模式】【行为型模式】备忘录模式(Memento)
  • 【python】向Jira测试计划下,附件中增加html测试报告
  • ROS学习
  • 全国哪些考研机构比较好?
  • 笔试-士兵过河
  • 【计算机视觉】文本识别
  • SpringBoot实战:高效获取视频资源
  • 高频 SQL 50 题(基础版)
  • PMTUD By UDP
  • C++自研游戏引擎-碰撞检测组件-八叉树AABB检测算法实现
  • 无人机常见的开源飞控项目
  • MySQL安装MySQL服务时提示Install-Remove of the Service Denied
  • 数论补充 之 前后缀分解问题
  • 编程技巧:VUE 实现接口返回数据的流式处理
  • FPGA实现SDI视频缩放转GTY光口传输,基于GS2971+Aurora 8b/10b编解码架构,提供工程源码和技术支持