CMake自动添加子目录
转载自:https://blog.csdn.net/yunxinyi91/article/details/107485257
# 获取目录下的子目录名
# output 子目录名称列表, 填充时不能加${}
# target 目标路径, 全路径
macro(list_subdir output target)
file(GLOB children ${target}/*)
set(dir_list "")
foreach(child ${children})
file(RELATIVE_PATH child_name ${target} ${child})
if(IS_DIRECTORY ${target}/${child_name})
list(APPEND dir_list ${child_name})
endif()
endforeach()
list(APPEND ${output} ${dir_list})
endmacro()
# 判断目录下是否有 CMakeLists
# output 是否含有 CMakeLists.txt, 填充时不能加 ${}
# target 目标路径, 全路径
macro(check_cmakelists output target)
set(${output} FALSE)
if(IS_DIRECTORY ${target})
if(EXISTS ${target}/CMakeLists.txt)
set(${output} TRUE)
endif()
else()
message(FATAL_ERROR "Invalid dir para: ${target}")
endif()
endmacro()
# 为含有 CMakeList 的子目录添加 add_subdirectory 调用
macro(add_all_subdirs)
set(subdir_list "")
list_subdir(subdir_list ${CMAKE_CURRENT_SOURCE_DIR})
foreach(subdir ${subdir_list})
set(has_cmakelist FALSE)
check_cmakelists(has_cmakelist ${CMAKE_CURRENT_SOURCE_DIR}/${subdir})
if(${has_cmakelist})
add_subdirectory(${subdir})
endif()
endforeach()
endmacro()
本文来自博客园,作者:尽千帆,转载请注明原文链接:https://www.cnblogs.com/lonelyraft/p/add_all_subdirs.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix