【发布时间】:2020-05-27 14:22:51
【问题描述】:
我的目录结构如下:
.
├── CMakeLists.txt
└── deps
├── eigen
│ └── include
│ ├── Eigen
│ └── eigen.h
└── osg
├── include
│ └── Osg
└── lib
└── libosg.so
我正在尝试获取最多的我不需要部署我的软件的文件,即库。
我试图创建一个匹配*.h 文件和include 目录的通配符:
file(GLOB_RECURSE
FOUND_FILES
LIST_DIRECTORIES true
${CMAKE_SOURCE_DIR}/deps/*/include
${CMAKE_SOURCE_DIR}/deps/*/*.h)
message(STATUS "Files are ${FOUND_FILES}")
但是,由于某种原因,变量FOUND_FILES 包含deps/osg/lib。 GLOB_RECURSE 函数我有什么不明白的地方?
- deps/eigen/include
- deps/eigen/include/eigen.h
- deps/osg/include
- deps/osg/lib
- deps/eigen/include
- deps/osg/include
- deps/osg/lib
【问题讨论】:
-
您正在请求它。来自文档:默认情况下 GLOB_RECURSE 从结果列表中省略目录 - 将 LIST_DIRECTORIES 设置为 true 会将目录添加到结果列表中。
-
是的,但 osg/lib 中没有任何内容与全局表达式匹配
-
好点。一定是错过了,抱歉打扰了。
-
是的,
deps/*.h确实足够了。 -
我可以用简单的
mkdir -p ./source/deps/osg/{include,lib} ./source/deps/eigen/include和file(GLOB_RECURSE FOUND_FILES LIST_DIRECTORIES true ${CMAKE_CURRENT_LIST_DIR}/source/deps/*/include ) foreach(i IN LISTS FOUND_FILES) message(STATUS "${i}") endforeach()cmake 脚本重现.. :/