【cmake】获取到某个目录下的所有子目录名

整体工程目录结构如下。现打算获取到vac目录下的所有子目录名。

cmake 实现如下: 

# 设定要遍历的目录,保存到 VAC_INCLUDE_DIR 变量
set(VAC_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/vac)

# 获取到当前目录下的所有文件和目录(以相对路径的方式),保存到 ALL_ITEMS 变量
file(GLOB ALL_ITEMS RELATIVE ${VAC_INCLUDE_DIR} ${VAC_INCLUDE_DIR}/*)

# 遍历所有的文件
foreach(ITEM ${ALL_ITEMS})
    # 判断是否为目录
    if(IS_DIRECTORY ${VAC_INCLUDE_DIR}/${ITEM})
        message(WARNING ${ITEM})
    endif()
endforeach()

注意: 

直接使用下面这种写法,保存到 ALL_ITEMS 中的将会是绝对路径,如C:/project/vac/dir1

file(GLOB ALL_ITEMS ${VAC_INCLUDE_DIR}/*)

加入 RELATIVE ${VAC_INCLUDE_DIR} 以后,获取到的路径将会将相对于${VAC_INCLUDE_DIR},此时保存到 ALL_ITEMS 中的将会是一个单独的目录名,而不带路径前缀

file(GLOB ALL_ITEMS RELATIVE ${VAC_INCLUDE_DIR} ${VAC_INCLUDE_DIR}/*)

猜你喜欢

转载自blog.csdn.net/challenglistic/article/details/134782592
今日推荐