天嵌 ARM开发社区

 找回密码
 注册
查看: 2309|回复: 4

我写的第一个脚本(生成Makefile)

[复制链接]
hailongxl 发表于 2010-5-28 20:33:12 | 显示全部楼层 |阅读模式
本帖最后由 hailongxl 于 2010-5-28 20:38 编辑

本人刚接触linux一个多月,写了个由qtopia的designer的ui文件生成Makefile的脚本,贡献给大家,价值不高,请笑纳并请指教:

#!/bin/bash

if [ $# -eq 0 ]; then
        echo "Usage:ui2impl <ui_name> [target_name]"
        exit 1
elif [ $# -eq 1 ]; then
        HEADER_FILE=$1.h
        IMPL_FILE=$1.cpp
        MOC_FILE=moc_$1.cpp
        TARGET_FILE=$1
else
        HEADER_FILE=$2.h
        IMPL_FILE=$2.cpp
        MOC_FILE=moc_$2.cpp
        TARGET_FILE=$2
fi

# Generate .h,.cpp and moc files.
$QTDIR/bin/uic -o $HEADER_FILE  $1.ui
$QTDIR/bin/uic -o $IMPL_FILE -impl $HEADER_FILE $1.ui
$QTDIR/bin/moc $HEADER_FILE -o $MOC_FILE

# Generate main.cpp
echo -e \
"#include \"$HEADER_FILE\"\n"\
"#include <qapplication.h>\n"\
"#include <qtopia/qpeapplication.h>\n"\
"\n"\
"QTOPIA_ADD_APPLICATION(\"$TARGET_FILE\",$1)\n"\
"QTOPIA_MAIN"\
>main.cpp

# Generate .pro file
echo -e \
"TEMPLATE       =       app\n"\
"CONFIG         =       qtopia warn_on release\n"\
"HEADERS                =       $HEADER_FILE\n"\
"SOURCES                =       $IMPL_FILE \\ \n"\
"                       main.cpp\n"\
"INTERFACES     =       $1.ui"\
>$TARGET_FILE.pro      

# Generate Makefile
tmake -o Makefile $TARGET_FILE.pro
 楼主| hailongxl 发表于 2010-5-28 22:25:13 | 显示全部楼层
本帖最后由 hailongxl 于 2010-5-28 22:29 编辑

不好意思,进行了一下修改。
现在只要提供一个ui文件,就可以生成一切了,如果不出意外的话,调用此脚本后可以直接make,并且已经包含了建立desktop文件,png文件,执行文件到正确位置的脚本。

[/opt/tq2440/first]# cat ui2impl
#!/bin/bash

if [ $# -ne 2 ]; then
        echo "Usage:ui2impl <ui_name> <target_name>"
        exit 1
elif [ "$1" = "$2" ]; then
        echo -e "Usage:ui2impl <ui_name> <target_name>\ntarget name cannot as same as ui_name."
        exit 2
fi

# Generate .h,.cpp and moc files.
$QTDIR/bin/uic -o $2.h -subdecl $2 $1.h $1.ui
$QTDIR/bin/uic -o $2.cpp -subimpl $2 $2.h $1.ui

# Generate main.cpp
echo -e \
"#include \"$2.h\"\n"\
"#include <qapplication.h>\n"\
"#include <qtopia/qpeapplication.h>\n"\
"\n"\
"QTOPIA_ADD_APPLICATION(\"$2\",$2)\n"\
"QTOPIA_MAIN"\
>main.cpp

# Generate .pro file
echo -e \
"CONFIG         +=      qtopiaapp\n"\
"CONFIG         -=      buildQuicklaunch\n"\
"DESTDIR        =       $QPEDIR/image/opt/Qtopia/bin\n"\
"TARGET         =       $2\n"\
"HEADERS        =       $2.h\n"\
"SOURCES        =       $2.cpp\n"\
"SOURCES        +=      main.cpp\n"\
"INTERFACES     =       $1.ui\n"\
>$2.pro

# Generate Makefile
qmake -o Makefile -spec $QPEDIR/mkspecs/qws/linux-generic-g++ $2.pro

# Generate .desktop file
echo -e \
"[Desktop Entry]\n"\
"Version=1.0\n"\
"Name=$2\n"\
"Comment[]=Your comment goes here.\n"\
"Exec=$2\n"\
"Type=Applicatioin"\
>$QPEDIR/image/opt/Qtopia/apps/JC-SYSTEMS/$2.desktop

if [ -f $2.png ]; then
        cp $2.png $QPEDIR/image/opt/Qtopia/pics/
        echo -e "Icon=$2" >> $QPEDIR/image/opt/Qtopia/apps/JC-SYSTEMS/$2.desktop
else
        echo -e "Icon=qtlogo" >> $QPEDIR/image/opt/Qtopia/apps/JC-SYSTEMS/$2.desktop
fi
 楼主| hailongxl 发表于 2010-5-28 22:31:52 | 显示全部楼层
designer first.ui &
./ui2impl first jcf
make

万事大吉
 楼主| hailongxl 发表于 2010-5-29 08:48:45 | 显示全部楼层
觉得有用的请支持下啊。
亚瑟王 发表于 2010-5-29 17:13:46 | 显示全部楼层
赞一个。
你最好是添加中文注释,要不然很多人都不会用的。呵呵。
添加中文注释了,我给你加精。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-9-28 02:30 , Processed in 1.045831 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表