2017-02-16 85 views
1

我已經很徹底地搜索,但找不到一種方法來獲取目錄中的所有文件夾。我有以下的qt項目結構如何添加一個目錄內的所有.pri文件

first/ 
    second/ 
     - second.pri 

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

我想包括first.pri文件中的所有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我有三個級別。 – akashrajkn

回答

1

QMAKE功能列出所有遞歸一個目錄下的文件:

# - 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) 
} 

list_recursively功能,可以與特定的擴展篩選只有那些文件,例如.pri。如果您的項目結構僅包含.pri文件,則甚至不需要這樣做。

注意:QMake不能正確使用空白,通常避免它們是個好主意。

編輯:

增加了一個過濾器爲.pri文件。

+0

如何獲得pri文件?我試過,($$ var/*。pri),但它不打印任何東西。 – akashrajkn

+1

@akashrajkn:我爲.pri文件添加了一個過濾器。希望它有幫助。 –

相關問題