2017-02-16 20 views
1

かなり徹底的に検索しましたが、ディレクトリ内のすべてのフォルダを取得する方法が見つかりませんでした。私は次のqtプロジェクト構造を持っていますすべての.priファイルをディレクトリ内に追加する方法

first/ 
    second/ 
     - second.pri 

    third/ 
     - third.pri 
    ... 
    first.pri 

私はすべてのpriファイルをfirst.priファイルに含めたいと思います。私は

include($$PWD/second/second.pri) 
include($$PWD/third/third.pri) 
... 

を行うことができますしかし、問題は、将来的に追加多くのサブディレクトリがある可能性があると私は自動的にすべてのPRIファイルを含めたいです。私は試しました

FILES = $$files($$PWD/*/*.pri) 
for(FILE, FILES) { 
    include($$FILE) 
} 

しかし、これは最初のフォルダ内のフォルダを見つけることはありません。 $$files documentationは再帰的な指定が可能ですが、サブディレクトリには下りません。どのように達成するのですか?

+0

あなたはこれらの2つのレベルのみを持っていますか?完全に再帰的なソリューションが必要なのでしょうか? –

+0

@AdrianMaire私は3つのレベルがあります。 – akashrajkn

答えて

1

QMAKE機能リストディレクトリ以下を再帰的にすべてのファイル:list_recursively機能で

# - Function that list all files below a directory 
defineReplace(list_recursively) { 
    FILES = $$files($$1) 
    RESULT = 
    for(var, $$list($$FILES)) { 
     exists($$var) 
     { 
      RESULT *= $$find(var, .*\.pri) 
      RESULT *= $$list_recursively($$var/*) 
     } 
    } 
    return($$RESULT) 
} 

# - Define the base directory 
DIR = $$PWD/* 

# - Test the function 
temp_dir = $$list_recursively($$DIR) 

# - Output the result 
for(var, $$list($$temp_dir)) { 
    message($$var) 
} 

、たとえば.priのために、特定の拡張子を持つファイルのみをフィルタリングすることが可能です。プロジェクト構造に.priファイルしか含まれていない場合でも、これは必要ありません。

注:QMakeは空白で正しく機能しませんが、通常は回避することをお勧めします。

EDITED:

.priファイル用のフィルタが追加されました。

+0

priファイルのみを取得するにはどうすればよいですか?私は($$ var/*。pri)を試しましたが、何も印刷しません。 – akashrajkn

+1

@akashrajkn:.priファイル用のフィルタを追加しました。それが助けて欲しい。 –

関連する問題