2016-12-01 3 views
3

ドキュメントでこれを言及しないことを選択したにもかかわらず、file(GLOB ...)file(GLOB_RECURSE ...)は現在のソースディレクトリでしか動作しないように見えます。異なるディレクトリをglobする方法はありますか?CMakeの別のディレクトリでファイルグロブを使用する方法

+0

という名前のサブフォルダはありません。あなたは[mcve]を与えてもらえますか? – Florian

答えて

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

はい、うまくいきます: 'file(GLOB my_cpp_list" $ {CMAKE_CURRENT_SOURCE_DIR} /../ test/*。cpp ")' – Blabdouze

0

私が指定したパスに関係なく、CMAKE_CURRENT_SOURCE_DIRからグロブを取得するのと同じ問題が発生しました。問題は、私がGLOBに提供していたパスが有効ではなく、CMAKE_CURRENT_SOURCE_DIRに戻っていたことです。たとえば、次のいずれかの症状が表示されます。

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

"/"の後に "directory"を忘れてしまいました。これが有効なディレクトリ名でも有効な結果を得られなかった理由です。

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

「directoryy」鐘を皮しない

関連する問題