1.判断是否有该模块,有则编译,无则忽略
qtHaveModule(webengine) {
SUBDIRS += \
webview
}
2.指定依赖关系
examples.depends = tools support skins qmlexport
3.使用 DEFINES 宏定义项目全局开关
4.指定生成路径:
DESTDIR = $$PWD/bin/ #指定编译后可执行文件生成的地方
RCC_DIR = $$PWD/target/rcc_target
MOC_DIR =$$PWD/target/moc_target
OBJECTS_DIR = $$PWD/target
5.编译前拷贝文件
win32 {
src_dir = $$PWD\docs\*.*
CONFIG(debug, debug|release) {
dst_dir = $$PWD\\bin\\
} else {
dst_dir = $$PWD\\bin\\
}
# dst_dir 最后的 \\ 是必须的,用来标示 xcopy 到一个文件夹,若不存在,创建之
# Replace slashes in paths with backslashes for Windows
src_dir ~= s,/,\\,g
dst_dir ~= s,/,\\,g
exists($$dst_dir):system(xcopy $$src_dir $$dst_dir /y /e)
}
6.windows以管理员运行:
QMAKE_LFLAGS += /MANIFESTUAC:\"level=\'requireAdministrator\' uiAccess=\'false\'\" #以管理员运行
7.编译前和编译后执行(windows下不用make install)
#该行会在:G:/Qt/5.15.2/mingw81_64/qml/ 创建com/org/example/io目录
uri = com.org.example.io
#CONFIG += qmltypes
#QML_IMPORT_NAME = com.mycompany.messaging
#QML_IMPORT_MAJOR_VERSION = 1
DISTFILES = qmldir
#QMAKE_POST_LINK 表示编译后执行内容
#QMAKE_PRE_LINK 表示编译前执行内容
#目标目录
installPath = $$[QT_INSTALL_QML]/$$replace(uri, \., /)/
#设置可执行文件或库文件的输出目录
DESTDIR = $$installPath
!equals(_PRO_FILE_PWD_, $$OUT_PWD) {
#设置把qmldir文件拷贝到文件编译输出目录
copy_qmldir.target = $$installPath
copy_qmldir.depends = $$_PRO_FILE_PWD_/qmldir
copy_qmldir.commands = $(COPY_FILE) "$$replace(copy_qmldir.depends, /, $$QMAKE_DIR_SEP)" "$$replace(copy_qmldir.target, /, $$QMAKE_DIR_SEP)"
QMAKE_EXTRA_TARGETS += copy_qmldir
PRE_TARGETDEPS += $$copy_qmldir.target
# cop_qmldir_system_commands= $(COPY_FILE) "$$replace(copy_qmldir.depends, /, $$QMAKE_DIR_SEP)" "$$replace(installPath, /, $$QMAKE_DIR_SEP)"
# message($$cop_qmldir_system_commands)
#判断要安装的目录是否存在
# !exists($installPath) {
#不存在,则创建该目录
# create_dir_command = $(MKDIR) "$$replace(installPath, /, $$QMAKE_DIR_SEP)"
#编译前执行
# QMAKE_PRE_LINK = $$create_dir_command
# message("install path is not exists.....")
# }
#编译后执行
# QMAKE_POST_LINK = $$cop_qmldir_system_commands
}
#DISTFILES = qmldir
上图示例在项目编译完成后执行信息如下: