鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > 服务器相关 > 批处理 > >

Qt目标文件执行脚本

来源:互联网 作者:佚名 时间:2015-11-13 08:07
用过Qt Creator的朋友都知道,编译生成的可执行文件并没有在工程目录下,而是在 ../xxx-build-Desktop-[Debug|Release]/中。如果我们想运行这个生成的可执行文件,那么我们要找到这个目录并执行这个目录下的目标文件。 我写的这个脚本就是自动查找目标文件所
用过Qt Creator的朋友都知道,编译生成的可执行文件并没有在工程目录下,而是在 ../xxx-build-Desktop-[Debug|Release]/中。如果我们想运行这个生成的可执行文件,那么我们要找到这个目录并执行这个目录下的目标文件。
我写的这个脚本就是自动查找目标文件所在的目录,并执行目标文件。给咱们程序员朋友减轻点来回切换的工作量。
工作原理是:
1. 从 *.pro 工程文件中提取 TARGET 变量的值,即生成的可目标文件名。
2. 从 *.pro.user 工程临时文件中找到目标文件所在的目录。通常会有两个目录,一个是Debug目录,别一个是Release目录。从QML文件中提供BuildDirectory的值使用awk命令进行两重分割。我承认这种做法很低极,有好建议的朋友请留言。
3. 然后将目标文件路径与目标文件名组合在一起,形成目标文件名全称,并执行。
Qt Creator
#!/bin/bash

run () {

    if [ ! -f *.pro ] || [ ! -f *.pro.user ]; then
        echo "Warn: Can't find \"*.pro\" or \"*.pro.user\" files !"
        return
    fi

    # 从*.pro.user文件中提供目标生成路径,用awk切割了两次
    build_path_array=($(grep "BuildDirectory" *.pro.user | grep $1\
                      | awk -F\< '{print $2}' \
                      | awk -F\> '{print $2}' \
                      | uniq))

    # 从*.pro文件中提供目标文件名,即TARGET变量的值
    exec_file_name=$(echo $(awk -F\= '/TARGET/ {print $2}' *.pro))

    for build_path in ${build_path_array[@]}
    do
        # 将目标路径与目标文件名拼接成目标文件全称
        target=${build_path}/$exec_file_name

        if [ -f "$target" ]; then  # 检查目标文件是否存在
            echo "Run \"$target\"."
            $target &    # 执行目标文件
            break
        fi 
    done
}

help () {
    echo " Usage: Run executale file directly."
    echo " run d|D|debug|Debug       #run debug file"
    echo " run r|R|release|Release   #run release file"
}

#################################################################
# start here
case $1 in
    D|d|Debug|debug)
        run Debug;;
    R|r|Release|release)
        run Release;;
    *)  help
esac
网友评论
<