Mat*_*ein 7 qt qmake qt-creator
我有一个.pro文件,看起来像:
SOURCES += myfolder/source1.cpp \
myfolder/source2.cpp
HEADERS += myfolder/header1.h\
myfolder/header2.h
FORMS += myfolder/form1.ui\
myfolder/form2.ui
Run Code Online (Sandbox Code Playgroud)
一切都很好.但是,如果我尝试使用星号来包含所有文件,即:
SOURCES += myfolder/*.cpp
HEADERS += myfolder/*.h
FORMS += myfolder/*.ui
Run Code Online (Sandbox Code Playgroud)
qmake抛出一个file-not-found-error:
WARNING: Failure to find: myfolder\*.cpp
[...]
:-1: error: No rule to make target `myfolder/*.cpp', needed by `release/source1.o'. Stop.
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,Qt-Creator都可以找到这些文件.
有没有办法使用星号?手动输入文件很烦人.
谢谢!
[编辑:Qt 4.8.4,Windows 7,Qt-Creator 2.6.1.因忘记这个想法而不想要它.
[编辑:找到解决方案:http://qt-project.org/forums/viewthread/1127.还是非常感谢!]
jco*_*jco 18
在qmake 3.0,至少,可以使用类似的东西:
SOURCES = $$files(*.cpp, true)
HEADERS = $$files(*.h, true)
Run Code Online (Sandbox Code Playgroud)
该true参数将使files函数以递归方式查找与第一个参数给出的模式匹配的所有文件.
首先,使用星号是不好的做法 - 尽管 qmake 允许,但 QtCreator 在添加新文件、重命名或删除文件时无法正确编辑此类 *.pro。因此,请尝试使用“新文件”或“添加现有文件”对话框添加新文件。
QMake 有 for 循环和函数 $$files(directory_path: String)。还将文件分别附加到 SOURCES 或 HEADERS 变量。
简短的示例,它将所有文件(但不包括目录)添加到变量 FILES (不影响构建或项目树):
files = $$files($$PWD/src)
win32:files ~= s|\\\\|/|g
for(file, files):!exists($$file/*):FILES += $$file
Run Code Online (Sandbox Code Playgroud)
如果你想检查文件是否为 *.cpp,请尝试使用 contains($$file, ".cpp")。
files = $$files($$PWD/src)
win32:files ~= s|\\\\|/|g
for(file, files):!exists($$file/*):contains($$file, ".cpp"):SOURCES += $$file
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6007 次 |
| 最近记录: |