愚昧之重大发现-嵌入式Eclipse C++项目-命令行整体编译

ngswfx 2017-12-12 21:37:12 6101
先说我遇到的问题,由于习惯了IDE编程,所以介入嵌入式编程以来,一直是使用eclipse c++,以前使用vc6编程时,整个项目很大,有几十个工程文件,vc6也支持批处理,常见的打包程序,都支持批处理动作,可以很好的输入一个命令就去上厕所或者休息了,等回来,就可以直接测试打包好的最终程序了,而且我这边当时做的是直接产生光盘目录
到了eclipse这里,以及QT这里遇到麻烦了,网上搜索了快一年了,都没有找到解决方法,说的不明不白。
其实我要干的事情,就是代码修改完成,简单测试某个库后,一个动作命令,产生最后的U盘升级包,或者flash镜像文件,由于系统牵扯好几个海思芯片,例如3520D,3535,3536,3536c,3798M,编译器不同,为此,如果自己折腾makefile,自己没掌握,牵扯的东西太多,项目也很庞大,也没时间学习具体细节了,再来折腾了
为此每次都需要将近期修改了代码的某个.so工程,或者执行程序工程,在eclipse里面,点击项目编译,然后由于有编译后批处理install.sh协助,会自动编译出so文件,并且拷贝到相应目录,如果界面有修改,就到QTCreator当中去编译界面的工程,这些动作做完了,我写过一个打包各个板卡芯片的批处理,最后可以自动产生升级程序。但毕竟中间还需要跑到eclipse中编译项目,而且麻烦的是由于芯片很多,有时候为了防止漏编译,每个芯片都要进行一次,避免某个芯片没有编译,程序不匹配,导致最后板卡烧写测试才能发现问题。每次到了项目打包,都要折腾半个小时左右才能把所有芯片的程序打包,而且由于程序库的相关性,有些库有先后顺序,所以还不能搞错,当时就觉得这时IDE界面编程带来的不便,比起界面编程,可以在十几二十几个工程里面拷贝复制,游刃有余带来的遍历,这半个小时也就一直忍受着。
今天突然发现eclipse里面编译时,就是个make -j4 clean 以及make -j4 all,我就到Release目录下试了一下,先clean再make all,还真有动作,现在想想,eclipse其实产生的这个makefile就是标准的,可以直接用的,害得我,这么久都是手动动作。

////////////////

批处理内容简单如下

// #!/bin/sh
export PATH=PATH:/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/bin:/opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/bin:/opt/hisi-linux-nptl/arm-hisiv100-linux/target/bin:/opt/hisi-linux/x86-arm/arm-hisiv300-linux/lib:/opt/hisi-linux/x86-arm/arm-hisiv100-linux/target/bin:/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/opt/hisi-linux-nptl/arm-hisiv100-linux/bin:/opt/hisi-linux-nptl/arm-hisiv300-linux/bin:/opt/hisi-linux-nptl/arm-hisiv400-linux/bin:/opt/hisi-linux/x86-arm/arm-hisiv400-linux/target/bin:/usr/lib/x86_64-linux-gnu:/opt/hisi-linux/x86-arm/arm-hisiv300-linux/arm-hisiv300-linux-uclibcgnueabi/lib:/opt/hisi-linux/x86-arm/arm-hisiv300-linux/arm-hisiv300-linux-uclibcgnueabi/lib/a9_soft:/opt/hisi-linux/x86-arm/arm-hisiv300-linux/lib:/opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/lib:/opt/hisi-linux/x86-arm/arm-hisiv300-linux/lib:/opt/hisi-linux/x86-arm/arm-hisiv400-linux/target/bin:/opt/hisi-linux/x86-arm/arm-hisiv400-linux/lib:/opt/hisi-linux/x86-arm/arm-hisiv300-linux/arm-hisiv300-linux-uclibcgnueabi/lib:/opt/hisi-linux/x86-arm/arm-hisiv300-linux/arm-hisiv300-linux-uclibcgnueabi/bin:/opt/hisi-linux/x86-arm/arm-hisiv300-linux/arm-hisiv300-linux-uclibcgnueabi/lib:/opt/hisi-linux/x86-arm/arm-hisiv500-linux/arm-hisiv500-linux-uclibcgnueabi/bin:/opt/hisi-linux/x86-arm/arm-hisiv500-linux/arm-hisiv500-linux-uclibcgnueabi/lib:/opt/hisi-linux/x86-arm/arm-hisiv500-linux/target/bin

cd /home/ngs
sudo chmod -R 777 /home/ngs/workspace

#####################################HIRtc

注意这里,虽然是一个工程HIRtc,但有好几个配置,每种配置都会有一个目录,如果你也是用的eclipse,打开目录一看就清楚了,只要eclipse里面编译各个项目正常,这里就是正常的

cd /home/ngs/workspace/HIRtc/Release
make -j4 clean
make -j4 all
cd /home/ngs/workspace/HIRtc/release_3516A
make -j4 clean
make -j4 all
cd /home/ngs/workspace/HIRtc/release_3535
make -j4 clean
make -j4 all
cd /home/ngs/workspace/HIRtc/release_3536C
make -j4 clean
make -j4 all
cd /home/ngs/workspace/HIRtc/releaseV200
make -j4 clean
make -j4 all
cd /home/ngs/workspace/HIRtc/releaseV300
make -j4 clean
make -j4 all

#############################################IVHISetIP

cd /home/ngs/workspace/IVHISetIP/Release
make -j4 clean
make -j4 all
cd /home/ngs/workspace/IVHISetIP/release_3516A
make -j4 clean
make -j4 all
cd /home/ngs/workspace/IVHISetIP/release_3535
make -j4 clean
make -j4 all
cd /home/ngs/workspace/IVHISetIP/release_3536
make -j4 clean
make -j4 all
cd /home/ngs/workspace/IVHISetIP/release_3536C
make -j4 clean
make -j4 all

cd /home/ngs/workspace/IVHISetIP/releaseV200
make -j4 clean
make -j4 all

####################################IVComInfSDK
cd /home/ngs/workspace/IVComInfSDK/Release
make -j4 clean
make -j4 all
cd /home/ngs/workspace/IVComInfSDK/release_3516A
make -j4 clean
make -j4 all
cd /home/ngs/workspace/IVComInfSDK/release_3535
make -j4 clean
make -j4 all
cd /home/ngs/workspace/IVComInfSDK/release_3536
make -j4 clean
make -j4 all
cd /home/ngs/workspace/IVComInfSDK/release_3536C
make -j4 clean
make -j4 all
cd /home/ngs/workspace/IVComInfSDK/release_3798M
make -j4 clean
make -j4 all

#############################################IVHIComDataSDK
cd /home/ngs/workspace/IVHIComDataSDK/Release
make -j4 clean
make -j4 all
cd /home/ngs/workspace/IVHIComDataSDK/release_3535
make -j4 clean
make -j4 all
cd /home/ngs/workspace/IVHIComDataSDK/release_3536
make -j4 clean
make -j4 all
cd /home/ngs/workspace/IVHIComDataSDK/release_3536C
make -j4 clean
make -j4 all
cd /home/ngs/workspace/IVHIComDataSDK/release_3798M
make -j4 clean
make -j4 all
cd /home/ngs/workspace/IVHIComDataSDK/release_3516A
make -j4 clean
make -j4 all
#############################################HSMPISDK_3516D
cd /home/ngs/workspace/HSMPISDK_3516D/Release
make -j4 clean
make -j4 all
#############################################HSMPISDK_3520D
cd /home/ngs/workspace/HSMPISDK_3520D/Release
make -j4 clean
make -j4 all
cd /home/ngs/workspace/HSMPISDK_3520D/release_MINI
make -j4 clean
make -j4 all

#############################################HSMPISDK_3535
cd /home/ngs/workspace/HSMPISDK_3535/Release
make -j4 clean
make -j4 all

#############################################HSMPISDK_3536

cd /home/ngs/workspace/HSMPISDK_3536/Release
make -j4 clean
make -j4 all

#############################################HSMPISDK_3536C

cd /home/ngs/workspace/HSMPISDK_3536C/Release
make -j4 clean
make -j4 all

#############################################HSMPISDKEx_3798M

cd /home/ngs/workspace/HSMPISDKEx_3798M/Release
make -j4 clean
make -j4 all

/////////////////////////////////////////////////////////////////////////

后面很多,省略

qt的工程也是一样:

###################################IVHITvWallCtrl
cd /home/ngs/workspace/IVHITvWallCtrl
make -j4 clean
sudo /home/ngs/QT/QT4.86_3798M/bin/qmake /home/ngs/workspace/IVHITvWallCtrl/IVHITvWallCtrl.pro -r -spec qws/linux-hisi3798M-g++ CONFIG+=3798M
make -j4
sudo chmod -R 777 /home/ngs/workspace/IVHITvWallCtrl/IVHITvWallCtrl
echo "ngs" |sudo -S cp -p -r IVHITvWallCtrl /nfsroot/HI3798M
echo "ngs" |sudo -S rm IVHITvWallCtrl

cd /home/ngs/workspace/IVHITvWallCtrl
make -j4 clean
sudo /home/ngs/QT/Qt4.8.6/bin/qmake /home/ngs/workspace/IVHITvWallCtrl/IVHITvWallCtrl.pro -r -spec qws/linux-3520d-g++ CONFIG+=HI3520D
make -j4
sudo chmod -R 777 /home/ngs/workspace/IVHITvWallCtrl/IVHITvWallCtrl

echo "ngs" |sudo -S cp -p -r IVHITvWallCtrl /nfsroot/HI3536C
echo "ngs" |sudo -S cp -p -r IVHITvWallCtrl /nfsroot/HI3536
echo "ngs" |sudo -S cp -p -r IVHITvWallCtrl /nfsroot/HI3520D
echo "ngs" |sudo -S cp -p -r IVHITvWallCtrl /nfsroot/HI3535
echo "ngs" |sudo -S rm IVHITvWallCtrl

/////////////////////////

然后再把我以前写的整体打包sh放到后面,这样就一个命令,直接产生升级包,就和大家平时用的一样了,唉,这么简单,怎么网上没有相关介绍呢,要么没搜到,要么就是太简单,所以称之为愚昧之重大发现,写出来,避免其他人遇到同样弱智的问题,折腾许久。
OK,输入sudo ./mkall.sh,升级包就自动放到网站或者发给客户了,每次改完程序,测试模块后,就是这个动作,就可以休息了
声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
ngswfx
红包 点赞 收藏 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
ngswfx
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区