Windows下用Scons编译QT程序

2024-02-01 06:38

本文主要是介绍Windows下用Scons编译QT程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Windows下用Scons编译QT程序

By  华少贰逼的时候, 2012/01/05 23:39

关于什么是python、什么是scons、什么是qt……这些肤浅、粗俗的问题,请求助于搜索引擎。 
本文仅记录怎么在Windows系统上让这几位合作起来。

注意: 
1. 前提是系统已经安装有QT SDK,安装有VC(或者MingW或者Cygwin之类的编译环境)。 
2. 注意文中路径,网上很多不成功的情况都源自某个环节的路径出错。 
3. 文中所列均为跨平台工具,理论上在其它系统环境下也能完成,成与不成,看你的悟性,以及人品。

一、安装Python。 
目前scons只能工作在python2系列上。我们需要先安装python2,现在python2系列最新的版本是2.7.2。 
最好的方式是到python.org上去下载windows installer,相当简单,基本一路next就OK。 
假设我们安装在D:\SOFTWARE\Python2.7

二、安装scons。 
最好的方式是去www.scons.org下载scons的windows intaller。当前最新的版本是http://prdownloads.sourceforge.net/scons/scons-2.1.0.win32.exe。 
然后点击安装。基本上,你只需简单的一路next。 
scons的installer会自动检测已经安装的python,然后将自己的程序安装到python子目录下。 
安装好的路径应该是这样: 
D:\SOFTWARE\Python2.7\Lib\site-packages\scons-2.1.0

三、测试scons。 
随便找个目录,新建一个helloworld.c。

1 #include <stdio.h>
2 int main()
3 {
4     printf("Hello, world!\n");
5     return 0;
6 }

相同目录下再新建一个名为"Sconstruct"的文件,内容只有一行,注意大小写。: 
Program(‘hello.c’)

然后进入命令行模式,CD到Sconstruct所在的目录,执行scons命令。 
一般会有以下输出:

      C:\>scons 
      scons: Reading SConscript files … 
      scons: done reading SConscript files. 
      scons: Building targets … 
      cl /Fohello.obj /c helloworld.c /nologo 
      link /nologo /OUT:helloworld.exe helloworld.obj 
      embedManifestExeCheck(target, source, env) 
      scons: done building targets.

同时在当前目录下会生成一个hellow.exe,大功造成。

四、安装scons-qt。 
scons-qt是基于scons项目的扩展模块,可以让scons支持QT特有的编译工具,像moc,rcc,uic等。 
在scons的wiki页面上可以看到scons-qt的介绍。(http://www.scons.org/wiki/ToolsIndex) 
当前scons-qt的主页在 https://bitbucket.org/dirkbaechle/scons_qt4/downloads 。 
当前最新版的下载地址 https://bitbucket.org/dirkbaechle/scons_qt4/get/default.zip 。 
解压出来会看到两个目录,分别是使用手册和测试用例,先放一边。 
真正需要安装的其实只有一个文件,即__init__.py。 
D:\SOFTWARE\Python2.7\Lib\site-packages\scons-2.1.0\SCons\Tool目录下新建一个名为qt4的文件夹。 
然后把__init__.py拷贝到该目录中。就这么简单。

五、测试scons-qt。 
下面是一个简单的QT程序,helloqt.cpp。

01 #include <QtGui/QtGui>
02 #include <QtCore/QtCore>
03  
04 int main(int argc, char ** argv)
05 {
06     QApplication app(argc, argv);
07     QPushButton * button = new QPushButton("Hello QT!");
08     button->show();
09     QObject::connect(button, SIGNAL(clicked()), &app, SLOT(quit()));
10     app.exec();
11     return 0;
12 }

在相同目录下建立一个名为“SConstruct”的文件,内容如下: 
env=Environment() 
env['QT4DIR']="D:\\SOFTWARE\\QT4.7.3" #这里是QT的安装路径 
env.Tool("qt4") 
env.EnableQt4Modules(['QtGui','QtCore']) 
env.Program(‘helloqt’,'helloqt.cpp’) 
特别要注意前四行,经常会有人在这里遇到问题。 
然后进入命令行模式,进入SConstruct所在目录,执行scons。

D:\Workspace\QT\helloQT>scons 
scons: Reading SConscript files … 
scons: done reading SConscript files. 
scons: Building targets … 
cl /Fohelloqt.obj /c helloqt.cpp /TP /nologo /DQT_GUI_LIB /DQT_CORE_LIB /ID:\SOF
TWARE\QT4.7.3\include /ID:\SOFTWARE\QT4.7.3\include /ID:\SOFTWARE\QT4.7.3\includ 
e\QtGui /ID:\SOFTWARE\QT4.7.3\include\QtCore 
helloqt.cpp 
link /nologo /OUT:helloqt.exe /LIBPATH:D:\SOFTWARE\QT4.7.3\lib qtmain.lib QtGui4
.lib QtCore4.lib helloqt.obj 
scons: done building targets.

当前目录下生成了一个helloqt.exe的文件。 
双击看到“Hello QT!”,大功告成。

这篇关于Windows下用Scons编译QT程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/666380

相关文章

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

QT Creator配置Kit的实现示例

《QTCreator配置Kit的实现示例》本文主要介绍了使用Qt5.12.12与VS2022时,因MSVC编译器版本不匹配及WindowsSDK缺失导致配置错误的问题解决,感兴趣的可以了解一下... 目录0、背景:qt5.12.12+vs2022一、症状:二、原因:(可以跳过,直奔后面的解决方法)三、解决方

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

C#控制台程序同步调用WebApi实现方式

《C#控制台程序同步调用WebApi实现方式》控制台程序作为Job时,需同步调用WebApi以确保获取返回结果后执行后续操作,否则会引发TaskCanceledException异常,同步处理可避免异... 目录同步调用WebApi方法Cls001类里面的写法总结控制台程序一般当作Job使用,有时候需要控制

Qt中实现多线程导出数据功能的四种方式小结

《Qt中实现多线程导出数据功能的四种方式小结》在以往的项目开发中,在很多地方用到了多线程,本文将记录下在Qt开发中用到的多线程技术实现方法,以导出指定范围的数字到txt文件为例,展示多线程不同的实现方... 目录前言导出文件的示例工具类QThreadQObject的moveToThread方法实现多线程QC

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构