如何在目录中添加所有 .pri 文件
How to add all .pri files inside a directory
我搜索得很彻底,但找不到获取目录中所有文件夹的方法。我有以下 qt 项目结构
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)
}
但这并没有找到 'first' 文件夹中的文件夹。 $$files documentation 允许指定递归,但它不会进入子目录。如何实现?
以下 QMAKE
函数递归列出目录下的所有文件:
# - Function that list all files below a directory
defineReplace(list_recursively) {
FILES = $$files($)
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 文件添加了过滤器。
我搜索得很彻底,但找不到获取目录中所有文件夹的方法。我有以下 qt 项目结构
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)
}
但这并没有找到 'first' 文件夹中的文件夹。 $$files documentation 允许指定递归,但它不会进入子目录。如何实现?
以下 QMAKE
函数递归列出目录下的所有文件:
# - Function that list all files below a directory
defineReplace(list_recursively) {
FILES = $$files($)
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 文件添加了过滤器。