- 方法一:变量COPIES指定需要拷贝的文件列表和目标路径;
copy_files.files = $$filelist
copy_files.path = $$OUT_PWD
COPIES += copy_files
- 方法二:变量QMAKE_SUBSTITUTES指定需要拷贝的文件和拷贝后的文件。
copy_file.input = qmldir
copy_file.output = $$OUT_PWD/qmldir
copy_file.CONFIG = verbatim
QMAKE_SUBSTITUTES += copy_file
其中,CONFIG指定的verbatim变量,表示完全拷贝文件内容,如果不指定该变量,可以解析input文件中的qmake语法生成需要的文件。
- 例子:项目qmake_copy三个示例:1、拷贝main.cpp文件;2、完全拷贝readme.txt.in文件;3、解析文件readme.txt.in后输出readme.txt文件
文件:qmake_copy.pro
QT += core
QT -= gui
CONFIG += c++11
TARGET = qmake_copy
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
DEFINES += QT_DEPRECATED_WARNINGS
# COPIES (in QMAKE_EXTRA_COMPILERS)
!equals(_PRO_FILE_PWD_, $$OUT_PWD) {
copy_cpp.files = main.cpp
copy_cpp.path = $$OUT_PWD
COPIES += copy_cpp
}
# QMAKE_SUBSTITUTES
!equals(_PRO_FILE_PWD_, $$OUT_PWD) {
copy_readme_in.input = readme.txt.in
copy_readme_in.output = $$OUT_PWD/readme.txt.in
copy_readme_in.CONFIG = verbatim # 完全复制
QMAKE_SUBSTITUTES += copy_readme_in
}
# QMAKE_SUBSTITUTES (copy file end with "*.in")
VERSION = 1.2.3.4
!equals(_PRO_FILE_PWD_, $$OUT_PWD) {
copy_readme.input = readme.txt.in
copy_readme.output = $$OUT_PWD/readme.txt
QMAKE_SUBSTITUTES += copy_readme
}
文件:main.cpp
#include <QCoreApplication>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug() << "HelloWorld.";
return a.exec();
}
文件:readme.txt.in
!!IF !isEmpty(VERSION)
Version($${VER_MAJ}.$${VER_MIN}.$${VER_PAT})
!!ELSE
No version.
!!ENDIF
输出后的文件:readme.txt
Version(1.2.3)