Qt.pro.编译完成后_做某些操作

1、我是在 项目中 用了ini配置文件,然后 想在编译结束后 自动将 代码目录的 ini文件 复制到 编译生成目录中去,pro文件中 如下写:

# ZC: 编译完成后,将"./cfg.ini"文件 也复制过去
# ZC: Windows下,copy命令中,目录使用"/"的话 不行 (据说Win10开始可以了)
#QMAKE_POST_LINK += copy $$PWD/cfg.ini $$OUT_PWD/cfg.ini
# ZC: 暂时使用下面这种方式吧:
QMAKE_POST_LINK += copy %cd%\..\txtOper_qt5142_vs17\cfg.ini debug\cfg.ini

  ZC:CMD中 %cd% 是得到当前所在目录,可以使用  echo %cd%  看下效果

2、参考:

 2.1、Qt编译后添加依赖文件到输出目录_Qt_my393661的博客-CSDN博客.html(https://blog.csdn.net/my393661/article/details/80582649

QMAKE_POST_LINK = cp -rf $$PWD/lab_const_1.xml $$OUT_PWD/lab_const_1.xml && \
                     cp -rf $$PWD/experiment1.xml $$OUT_PWD/experiment1.xml

  ZC:linux中的写法

 

 2.2、qt如何增加 在编译 生成后事件,想在编译程序后copy文件到其他文件夹-CSDN论坛.html(https://bbs.csdn.net/topics/390956406

  QMAKE_POST_LINK += ../install.bat

  ZC:直接执行bat

 

 2.3、关于 QMAKE_POST_LINK和QMAKE_PRE_LINK使用的说明_操作系统_浮光掠影-CSDN博客.html(https://blog.csdn.net/wkr2005/article/details/93711321

  网页内容复制:

 

qt的pro配置文件中也可添加各种编译前后的操作及配置,主要通过 QMAKE_POST_LINK和QMAKE_PRE_LINK;

QMAKE_POST_LINK表示编译后执行内容

QMAKE_PRE_LINK表示编译前执行内容

他们支持的函数以及写法,可以在QtCreator的帮助中搜索qmake Function 查看详情说明(QT的帮助文档是我见过最详细的使用文档); ------ ZC:真的这么详细的么?

比如copy文件如下:

win32:CONFIG(release, debug|release){
SrcIncludeFile = $$PWD/*.h
SrcIncludeFile = $$replace(SrcIncludeFile, /, \\);
OutputIncludeDir = $$PWD/../../../BSCommon/include/
OutputIncludeDir = $$replace(OutputIncludeDir, /, \\);
OutputFile = $$PWD/$${DESTDIR}/$${TARGET}.dll
OutputFile = $$replace(OutputFile, /, \\);
OutputDir = $$PWD/../../../BSCommon/bin/release/
OutputDir = $$replace(OutputDir, /, \\);
QMAKE_POST_LINK += copy /Y $$SrcIncludeFile $$OutputIncludeDir && copy /Y $$OutputFile $$OutputDir
}else:win32:CONFIG(debug, debug|release){
SrcIncludeFile = $$PWD/*.h
SrcIncludeFile = $$replace(SrcIncludeFile, /, \\);
OutputIncludeDir = $$PWD/../../../BSCommon/include/
OutputIncludeDir = $$replace(OutputIncludeDir, /, \\);
OutputFile = $$PWD/$${DESTDIR}/$${TARGET}.dll
OutputFile = $$replace(OutputFile, /, \\);
OutputDir = $$PWD/../../../BSCommon/bin/debug/
OutputDir = $$replace(OutputDir, /, \\);
QMAKE_POST_LINK += copy /Y $$SrcIncludeFile $$OutputIncludeDir && copy /Y $$OutputFile $$OutputDir
}
注意, 注意,注意:

在windows系统下面,由于命令行中大部分命令不支持“/”,所以把“/”替换成“\”。

多条命令语句之间可以用&&隔开,自动连续执行;

定义的宏变量,在非首位置使用时,需要带{}, 如
PWD/
PWD/
{DESTDIR}/$${TARGET}.dll中的DESTDIR和TARGET

3、

4、

5、

 

posted @ 2020-05-29 15:51  CppSkill  阅读(1615)  评论(0编辑  收藏  举报