cmake 子文件夹查找,子目录下的CMakeList查找

#定义函数,把文件夹下所有子文件夹保存在变量中
macro(list_sub_dir RESULT CUR_DIR FILTER_LIST)
    file(GLOB_RECURSE CHILDREN LIST_DIRECTORIES true  ${CUR_DIR}/*)
    set(DIR_LIST ${CUR_DIR})
    foreach(CHILD ${CHILDREN})
        if(IS_DIRECTORY ${CHILD})
            set(ADD_FLAG ON)
            foreach(FILTER ${FILTER_LIST})
                string(FIND "${FILTER}" "${CHILD}" RET)
                if(${RET} EQUAL -1)
                    set(ADD_FLAG OFF)
                endif()
            endforeach()
            if(${ADD_FLAG})
                list(APPEND DIR_LIST ${CHILD})
            endif()
            unset(ADD_FLAG)
        endif()
    endforeach()
    set(${RESULT} ${DIR_LIST})
endmacro()
#自动添加子目录下的CMakeLists
file(GLOB SUB_DIRS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*)
foreach(DIR ${SUB_DIRS})
    if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${DIR}/CMakeLists.txt)
        add_subdirectory(${DIR})
    endif()
endforeach()
# 获取文件夹名称
get_filename_component(module_name ${CMAKE_CURRENT_SOURCE_DIR} NAME)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容