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

相关文章

将java程序打包成可执行文件的实现方式

《将java程序打包成可执行文件的实现方式》本文介绍了将Java程序打包成可执行文件的三种方法:手动打包(将编译后的代码及JRE运行环境一起打包),使用第三方打包工具(如Launch4j)和JDK自带... 目录1.问题提出2.如何将Java程序打包成可执行文件2.1将编译后的代码及jre运行环境一起打包2

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

Windows设置nginx启动端口的方法

《Windows设置nginx启动端口的方法》在服务器配置与开发过程中,nginx作为一款高效的HTTP和反向代理服务器,被广泛应用,而在Windows系统中,合理设置nginx的启动端口,是确保其正... 目录一、为什么要设置 nginx 启动端口二、设置步骤三、常见问题及解决一、为什么要设置 nginx

在 Windows 上安装 DeepSeek 的完整指南(最新推荐)

《在Windows上安装DeepSeek的完整指南(最新推荐)》在Windows上安装DeepSeek的完整指南,包括下载和安装Ollama、下载DeepSeekRXNUMX模型、运行Deep... 目录在www.chinasem.cn Windows 上安装 DeepSeek 的完整指南步骤 1:下载并安装

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用

基于Qt Qml实现时间轴组件

《基于QtQml实现时间轴组件》时间轴组件是现代用户界面中常见的元素,用于按时间顺序展示事件,本文主要为大家详细介绍了如何使用Qml实现一个简单的时间轴组件,需要的可以参考下... 目录写在前面效果图组件概述实现细节1. 组件结构2. 属性定义3. 数据模型4. 事件项的添加和排序5. 事件项的渲染如何使用

Windows自动化Python pyautogui RPA操作实现

《Windows自动化PythonpyautoguiRPA操作实现》本文详细介绍了使用Python的pyautogui库进行Windows自动化操作的实现方法,文中通过示例代码介绍的非常详细,对大... 目录依赖包睡眠:鼠标事件:杀死进程:获取所有窗口的名称:显示窗口:根据图片找元素:输入文字:打开应用:依