自学内容网 自学内容网

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?(会者不难,不会的很头疼的)


(这里是文档结束)


原文地址:https://blog.csdn.net/2301_77171572/article/details/143005936

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!