Qt-在带有目录的.pro文件中使用星号(*)

Qt-在带有目录的.pro文件中使用星号(*),qt,qt-creator,qmake,Qt,Qt Creator,Qmake,我有一个.pro文件,看起来像: SOURCES += myfolder/source1.cpp \ myfolder/source2.cpp HEADERS += myfolder/header1.h\ myfolder/header2.h FORMS += myfolder/form1.ui\ myfolder/form2.ui 一切都很好。但是,如果我尝试使用星号包含所有文件,即: SOURCES += my

我有一个.pro文件,看起来像:

SOURCES += myfolder/source1.cpp \
           myfolder/source2.cpp
HEADERS  += myfolder/header1.h\
            myfolder/header2.h
FORMS    += myfolder/form1.ui\
            myfolder/form2.ui
一切都很好。但是,如果我尝试使用星号包含所有文件,即:

SOURCES  += myfolder/*.cpp
HEADERS  += myfolder/*.h
FORMS    += myfolder/*.ui
qmake抛出一个找不到文件错误:

WARNING: Failure to find: myfolder\*.cpp
[...]
:-1: error: No rule to make target `myfolder/*.cpp', needed by `release/source1.o'.  Stop.
在这两种情况下,Qt Creator都可以找到文件

有没有办法使用星号?手动键入文件很烦人

谢谢大家!

[编辑:Qt 4.8.4、Windows 7、Qt Creator 2.6.1.Sry,感谢您忘记了不需要它的想法。]


[编辑:找到解决方案:。谢谢!]

首先,使用星号是一种不好的做法-尽管qmake允许使用星号,但QtCreator无法在添加新文件、重命名或删除文件时正确编辑此类*.pro。因此,尝试使用“新建文件”或“添加现有文件”对话框添加新文件

QMake具有for循环和函数$$文件(目录路径:字符串)。还将文件分别附加到源或变量头

简要示例,将所有文件(但不包括目录)添加到变量文件(不影响构建或项目树):

如果要检查文件是否为*.cpp,请尝试使用contains($$file,“.cpp”)


qmake 3.0
中,至少可以使用以下内容:

SOURCES = $$files(*.cpp, true)
HEADERS = $$files(*.h, true)

true
参数将导致
files
函数递归查找与第一个参数给出的模式匹配的所有文件。

请问您使用的是什么版本的Qt和什么操作系统?小说明似乎没有记录:
$$files()
似乎不支持文件夹的通配符,仅适用于文件。对于我来说,在调用
$$files(…)
时,仅在末尾使用星号,即在本例中,将是
文件=$$files($$PWD/src/*)
而不是
文件=$$files($$PWD/src)
。我使用Qt5.15.1
files = $$files($$PWD/src)
win32:files ~= s|\\\\|/|g
for(file, files):!exists($$file/*):contains($$file, ".cpp"):SOURCES += $$file
SOURCES = $$files(*.cpp, true)
HEADERS = $$files(*.h, true)