如何在目录中添加所有 .pri 文件

Posted

技术标签:

【中文标题】如何在目录中添加所有 .pri 文件【英文标题】:How to add all .pri files inside a directory 【发布时间】:2017-02-16 11:31:45 【问题描述】:

我已经进行了彻底的搜索,但找不到获取目录中所有文件夹的方法。我有以下qt项目结构

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 允许指定递归,但它不会下降到子目录中。如何实现?

【问题讨论】:

你只有这两个级别吗?或者你想要一个完全递归的解决方案? @AdrianMaire 我有三个级别。 【参考方案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 文件添加了过滤器。

【讨论】:

如何只获取 pri 文件?我试过了,($$var/*.pri),但它没有打印任何东西。 @akashrajkn:我为 .pri 文件添加了一个过滤器。希望对您有所帮助。

以上是关于如何在目录中添加所有 .pri 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在Qt Creator 创建一个.pri文件

如何在Qt Creator中创建pri文件,以及pri文件的说明

如何在bash中递归复制所有目录和文件?

如何列出目录的所有文件?

如何批量抓取网页目录下的所有文件

QT 子文件的建立(pri)