关于linux上下载cppcheck及配置Qt环境等信息,可
参见我的上一篇文章 《64位centos上用Qt编译生成c/c++代码检查工具cppchek的GUI》
假定cppcheck下载后,存放在本地的路径为:/usr/tools/cppcheck-1.44
scons构建脚本文件目录结构如图所示
cppcheck-1.44 sconstruct文件
|
|---cli sconscript文件
|
|---gui sconscript文件
|
|---test sconscript文件
|
|---....
1、sconstruct文件,内容如下:
#!/usr/bin/python
import os
bin = '#bin'
myhome = os.getcwd()
env = Environment(
tools=['default','qt'],
ENV = os.environ,
CXXFLAGS = '-O2 -DNDEBUG -Wall -Ilib',
BINDIR = bin,
LIBS=[],
#QTDIR='/opt/qtsdk/qt'
)
Export('env','myhome')
subdir = ['./test','./cli','./gui']
for i in subdir:
env.SConscript('%s/sconscript' %(i) )
2、cli/sconscript文件,内容如下:
#!/usr/bin/python
import os
Import('env','myhome')
lib_files = Glob('%s/lib/*.cpp' %(myhome))
cli_files = Glob('%s/cli/*.cpp' %(myhome))
bin_cppcheck = env.Program(target='cppcheck',
source=[cli_files,lib_files],
CPPPATH= '%s/lib' %(myhome) )
cppcheck_install = env.Install('$BINDIR', bin_cppcheck)
env.Default(cppcheck_install);
3、gui/sconscript文件,内容如下:
#!/usr/bin/python
import os
import glob
Import('env','myhome')
def recursiveDirs(root) :
return filter( (lambda a : a.rfind( "SVN")==-1 ), [ a[0] for a in os.walk(root)] )
def unique(list) :
return dict.fromkeys(list).keys()
def scanFiles(dir, accept=["*.cpp"], reject=[]) :
sources = []
paths = recursiveDirs(dir)
for path in paths :
for pattern in accept :
sources+=glob.glob(path+"/"+pattern)
for pattern in reject :
sources = filter( (lambda a : a.rfind(pattern)==-1 ), sources )
return unique(sources)
lib_files = Glob('%s/lib/*.cpp' %(myhome))
temp_files = Glob('temp/*.cpp')
gui_files = Glob('*.cpp')
cpp_path = ['/opt/qtsdk/qt/mkspecs/linux-g++-64',
'/opt/qtsdk/qt/include',
'/opt/qtsdk/qt/include/QtCore',
'/opt/qtsdk/qt/include/QtGui',
'/opt/qtsdk/qt/include/QtXml',
'%s/gui/temp' %(myhome),'%s/gui' %(myhome)
]
lib_path = ['/opt/qtsdk/qt/lib','/usr/lib','/usr/X11R6/lib64']
ui_dir=['resultsview','application','main','settings','file','about']
for ui in ui_dir:
env.Execute("/opt/qtsdk/qt/bin/uic -o %s/gui/temp/ui_%s.h %s/gui/%s.ui" %(myhome,ui,myhome,ui))
# env.Uic(target="%s/gui/temp/ui_%s" %(myhome,ui),source=ui) 注:执行Uic接口有点问题
#for qrc in scanFiles('/usr/tools/cppcheck-1.44/gui', ['*.qrc']):
#print "hua:"+qrc
#env.Qrc(qrc, QT4_QRCFLAGS='-name '+'gui gui.qrc')
env.Execute('/opt/qtsdk/qt/bin/rcc -name gui gui.qrc -o temp/qrc_gui.cpp')
bin_gui = env.Program(target='gui',
source=[lib_files,gui_files,temp_files],
CPPPATH = cpp_path,
LIBPATH = lib_path,
LIBS=['QtGui','QtCore','QtXml','pthread']
)
gui_install = env.Install('$BINDIR', bin_gui)
env.Default(gui_install);
4、test/sconscript文件,内容如下:
#!/usr/bin/python
import os
Import('env','myhome')
lib_files = Glob('%s/lib/*.cpp' %(myhome))
cli_files = '%s/cli/threadexecutor.cpp' %(myhome)
test_files = Glob('*.cpp')+Glob('tinyxml/*.cpp')
bin_testrunner = env.Program(target='testrunner',
source=[test_files,lib_files,cli_files],
CPPPATH = ['%s/cli' %(myhome)])
test_install = env.Install('$BINDIR', bin_testrunner)
env.Default(test_install);
5、执行构建脚本
$cd /usr/tools/cppcheck-1.44
$scons即可
6、解决gui可执行程序运行不成功
在编译成功gui,生成可执行文件后,运行该可执行文件,系统提示错误信息:“error while loading shared libraries: libQtGui.so.4: cannot open shared object file: No such file or directory”
解决办法:
(1)查找libQtGui.so.4所在目录
$find /opt/qtsdk |grep libQtGui.so.4
/opt/qtsdk/qt/lib/libQtGui.so.4
/opt/qtsdk/qt/lib/libQtGui.so.4.6.3
/opt/qtsdk/qt/lib/libQtGui.so.4.6
/opt/qtsdk/lib/libQtGui.so.4
/opt/qtsdk/lib/libQtGui.so.4.7.0
(2)ld文件配置
$vi /etc/ld.so.conf
include id.so.conf.d/*.conf //里面只有一行,表示到id.so.conf.d目录中寻找配置信息
$cd /etc/ld.so.conf.d //转到Id.so.conf.d目录下
在该目录下会看到qt-i386.conf
修改Id路径
$vi qt-i386.conf //编辑qt-i386.conf文件
#/usr/lib/qt-3.3/lib //屏蔽默认指向qt-3.3的语句
/opt/qtsdk/qt/lib //增加指向qt4.6.3所在的目录
(3)设置完ld路径后,需要运行ldconfig命令,更新缓存
做完上述后,即可运行成功gui程序
分享到:
相关推荐
python学习资源
jfinal-undertow 用于开发、部署由 jfinal 开发的 web 项目
基于Andorid的音乐播放器项目设计(国外开源)实现源码,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。
python学习资源
python学习资源
python学习一些项目和资源
【毕业设计】java-springboot+vue家具销售平台实现源码(完整前后端+mysql+说明文档+LunW).zip
HTML+CSS+JavaScarip开发的前端网页源代码
python学习资源
【毕业设计】java-springboot-vue健身房信息管理系统源码(完整前后端+mysql+说明文档+LunW).zip
成绩管理系统C/Go。大学生期末小作业,指针实现,C语言版本(ANSI C)和Go语言版本
1_基于大数据的智能菜品个性化推荐与点餐系统的设计与实现.docx
【毕业设计】java-springboot-vue交流互动平台实现源码(完整前后端+mysql+说明文档+LunW).zip
内容概要:本文主要探讨了在高并发情况下如何设计并优化火车票秒杀系统,确保系统的高性能与稳定性。通过对比分析三种库存管理模式(下单减库存、支付减库存、预扣库存),强调了预扣库存结合本地缓存及远程Redis统一库存的优势,同时介绍了如何利用Nginx的加权轮询策略、MQ消息队列异步处理等方式降低系统压力,保障交易完整性和数据一致性,防止超卖现象。 适用人群:具有一定互联网应用开发经验的研发人员和技术管理人员。 使用场景及目标:适用于电商、票务等行业需要处理大量瞬时并发请求的业务场景。其目标在于通过合理的架构规划,实现在高峰期保持平台的稳定运行,保证用户体验的同时最大化销售额。 其他说明:文中提及的技术细节如Epoll I/O多路复用模型以及分布式系统中的容错措施等内容,对于深入理解大规模并发系统的构建有着重要指导意义。
基于 OpenCV 和 PyTorch 的深度车牌识别
【毕业设计-java】springboot-vue教学资料管理系统实现源码(完整前后端+mysql+说明文档+LunW).zip
此数据集包含有关出租车行程的详细信息,包括乘客人数、行程距离、付款类型、车费金额和行程时长。它可用于各种数据分析和机器学习应用程序,例如票价预测和乘车模式分析。
把代码放到Word中,通过开发工具——Visual Basic——插入模块,粘贴在里在,把在硅基流动中申请的API放到VBA代码中。在Word中,选择一个问题,运行这个DeepSeekV3的宏就可以实现在线问答
【毕业设计】java-springboot+vue机动车号牌管理系统实现源码(完整前后端+mysql+说明文档+LunW).zip
【毕业设计】java-springboot-vue交通管理在线服务系统的开发源码(完整前后端+mysql+说明文档+LunW).zip