QT 编译时拷贝文件

记:在进行QT开发时,一些程序运行依赖的外部库、配置文件需要从工程文件夹下拷贝到Debug或Release目录下,有时候修改后,手动拷贝非常麻烦,甚至忘记,遂记录下该命令。

一、直接修改.Pro文件

#-------------------------------------------------
#
# Project created by QtCreator 2023-07-16T21:08:53
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = Test
TEMPLATE = app

DESTDIR = $$PWD/Debug

SOURCES += main.cpp\
        widget.cpp

HEADERS  += widget.h

FORMS    += widget.ui

unix{
src_MenuConfig_file = $$PWD/MenuConfig
dst_MenuConfig_file = $$DESTDIR/MenuConfig

src_Languages_file = $$PWD/Languages
dst_Languages_file = $$DESTDIR/Languages

copyMenuConfig.commands = cp -r $$src_MenuConfig_file $$dst_MenuConfig_file
copyLanguages.commands = cp -r $$src_Languages_file $$dst_Languages_file
QMAKE_EXTRA_TARGETS += copyMenuConfig copyLanguages
POST_TARGETDEPS += copyMenuConfig copyLanguages
}

win32 {
src_MenuConfig_file = $$PWD\MenuConfig\\

src_MenuConfig_file ~= s,/,\\,g
dst_MenuConfig_file = $$DESTDIR\MenuConfig\\

dst_MenuConfig_file ~= s,/,\\,g
src_Languages_file = $$PWD\Languages\\

src_Languages_file ~= s,/,\\,g
dst_Languages_file = $$DESTDIR\Languages\\

dst_Languages_file ~= s,/,\\,g

copyMenuConfig.commands = xcopy $$src_MenuConfig_file $$dst_MenuConfig_file /S /E /Y
copyLanguages.commands = xcopy $$src_Languages_file $$dst_Languages_file  /S /E /Y
QMAKE_EXTRA_TARGETS += copyMenuConfig copyLanguages
POST_TARGETDEPS += copyMenuConfig copyLanguages
}

其中Linux系统和Windows系统下有点区别

二、注意事项

在Windows系统下,箭头处的换行非常重要,不换行的话,最终路径会不对。
Windows

ZhengLG
ChengDu China
2023.07.16

Qt Creator编译拷贝文件,可通过在项目的`.pro`文件中进行配置来实现。以下给出两种常见场景的配置示例: ### 自动复制QT依赖项到exe目录 在项目生成exe后自动复制QT依赖项到exe目录,可将如下配置放在项目`.pro`文件中: ```pro win32 { # 将QT依赖库和文件复制到exe目录,还会复制vc环境安装包vcredist_x86.exe到exe目录 DEPLOY_TOOL = $${dirname(QMAKE_QMAKE)}/windeployqt.exe DEPLOY_TOOL = $$replace(DEPLOY_TOOL, /, \\) contains(CONFIG, debug, debug|release){ DEPLOY_TARGET = $${OUT_PWD}/debug/$${TARGET}.exe #DEPLOY_TARGET = $${PWD}/../bin/$${TARGET}.exe }else{ DEPLOY_TARGET = $${OUT_PWD}/release/$${TARGET}.exe #DEPLOY_TARGET = $${PWD}/../bin/$${TARGET}.exe } DEPLOY_TARGET=$$replace(DEPLOY_TARGET, /, \\) msvc { # $$escape_expand("\\n\\t")可用来分隔不同指令 QMAKE_POST_LINK+=$$escape_expand("\\n\\t") $${DEPLOY_TOOL} $${DEPLOY_TARGET} --qmldir $$[QT_INSTALL_QML] --force --no-translations $$escape_expand(\\n) }else{ QMAKE_POST_LINK+='$$escape_expand("\\n\\t") $${DEPLOY_TOOL} $${DEPLOY_TARGET} --qmldir $$[QT_INSTALL_QML] --force --no-translations $$escape_expand("\\n\\t")' } # 显示命令 message("alter link execute command:" $$QMAKE_POST_LINK) } ``` 上述代码通过`QMAKE_POST_LINK`在编译链接完成后执行`windeployqt`工具,将QT依赖库和文件复制到exe目录,还会复制vc环境安装包`vcredist_x86.exe`到exe目录 [^2]。 ### 自定义文件拷贝 若要在编译拷贝自定义文件,可使用`QMAKE_POST_LINK`添加拷贝命令。示例如下: ```pro win32 { # 定义源文件和目标目录 SOURCE_FILE = "path/to/source/file.txt" TARGET_DIR = $${OUT_PWD}/release/ # 可根据需求修改为debug目录或其他目录 # 确保目标目录存在 QMAKE_POST_LINK += $$quote(mkdir -p $$TARGET_DIR) # 拷贝文件 QMAKE_POST_LINK += $$quote(copy /Y $$SOURCE_FILE $$TARGET_DIR) } ``` 以上代码在Windows系统下,编译完成后会将指定的源文件拷贝到目标目录。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值