2017-02-16 67 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文件添加了一个过滤器。希望它有帮助。 –

相关问题