2016-12-01 79 views

回答

2

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文件的路徑。

+0

您是否使用不是「CMAKE_CURRENT_SOURCE_DIR」子目錄的目錄對此進行了測試? –

+0

是的,它工作正常:'文件(GLOB my_cpp_list「$ {CMAKE_CURRENT_SOURCE_DIR} /../ test/*。cpp」)' – Blabdouze

0

我有同樣的問題,無論我指定什麼路徑,我會從CMAKE_CURRENT_SOURCE_DIR獲得一個glob。問題在於我提供給GLOB的路徑無效,並且正在恢復(優雅地但令人討厭地)到CMAKE_CURRENT_SOURCE_DIR。例如,以下任一情況都會產生您看到的症狀:

file(GLOB my_cpp_list "${CMAKE_CURRENT_SOURCE_DIR}/directory *.cpp") 

我忘記了「目錄」後面的「/」。這就是爲什麼我從來沒有得到有效的結果,即使有有效的目錄名稱。

file(GLOB my_cpp_list "${CMAKE_CURRENT_SOURCE_DIR}/directoryy/*.cpp") 

有一個名爲「directoryy」

相關問題