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?(会者不难,不会的很头疼的)
(这里是文档结束)