即使他们选择不在文档中提及此内容,file(GLOB ...)
和file(GLOB_RECURSE ...)
似乎只适用于当前的源目录。有没有办法为不同的目录添加一个球?
答案 0 :(得分:3)
file(GLOB)
起初可能有点混乱,几个月前我也有类似的问题。
您必须直接在<globbing-expressions>
:
file(GLOB <variable>
[LIST_DIRECTORIES true|false] [RELATIVE <path>]
[<globbing-expressions>...])
例如:
file(GLOB my_cpp_list "${CMAKE_CURRENT_SOURCE_DIR}/directory/*.cpp")
foreach(file_path ${my_cpp_list})
message(${file_path})
endforeach()
将在${CMAKE_CURRENT_SOURCE_DIR}/directory
中打印所有 .cpp 文件的路径。
答案 1 :(得分:1)
我有同样的问题,无论我指定什么路径,我都会从CMAKE_CURRENT_SOURCE_DIR获得一个glob。问题是我提供给GLOB的路径不是有效的,它正在恢复(优雅,但令人烦恼)到CMAKE_CURRENT_SOURCE_DIR。例如,以下任一项都会创建您看到的症状:
file(GLOB my_cpp_list "${CMAKE_CURRENT_SOURCE_DIR}/directory *.cpp")
我忘记了&#34; /&#34;在&#34;目录&#34;之后。这就是为什么我从来没有得到有效的结果,即使有效的目录名称。
file(GLOB my_cpp_list "${CMAKE_CURRENT_SOURCE_DIR}/directoryy/*.cpp")
没有名为&#34; directoryy&#34;
的子文件夹