Qt编译完成后自动执行脚本

有时候我们编译程序完成后需要执行某些操作,比如复制执行文件或库文件到指定目录,如果这些都靠手动复制,未免会太繁琐且容易出错。本文介绍使用Qmake工具编译完成后自动执行自定义脚本的方法。

编译完成后执行脚本/命令

  • 使用QMAKE_POST_LINK变量可以指定一个或多个脚本/命令在编译完成(链接)后执行的操作。
  • 比如:
    1
    QMAKE_POST_LINK += cmd_line1 cmd_line2

编译完成前执行脚本/命令

  • 使用QMAKE_PRE_LINK变量可以指定一个或多个脚本/命令在编译完成前(链接前)执行的操作。
  • 比如:
    1
    QMAKE_PRE_LINK += cmd_line1 cmd_line2

完整示例

  • 命令

    1
    2
    3
    4
    5
    BEFORE_LINK_CMD_LINE = echo Hello world!
    QMAKE_PRE_LINK += $$quote($$BEFORE_LINK_CMD_LINE)

    AFTER_LINK_CMD_LINE = echo Build Success!
    QMAKE_POST_LINK += $$quote($$AFTER_LINK_CMD_LINE)
  • Hello world!在程序链接前输出。

  • Build Success!在程序链接(编译完成)后输出。
    1
    2
    3
    4
    5
    6
    g++ -c -pipe -g -std=gnu++0x -Wall -W -D_REENTRANT -fPIC -DQT_QML_DEBUG -DQT_CORE_LIB -I../untitled -I. -I../../Tools/Qt5.6.3/5.6.3/gcc_64/include -I../../Tools/Qt5.6.3/5.6.3/gcc_64/include/QtCore -I. -I../../Tools/Qt5.6.3/5.6.3/gcc_64/mkspecs/linux-g++ -o main.o ../untitled/main.cpp
    echo Hello world!
    Hello world!
    g++ -Wl,-rpath,/home/strong/Tools/Qt5.6.3/5.6.3/gcc_64/lib -o untitled main.o -L/home/Tools/Qt5.6.3/5.6.3/gcc_64/lib -lQt5Core -lpthread
    echo Build Success!
    Build Success!