编译QCAD
编译QCAD
目前开源的二维CAD有QCAD、LibreCAD等,且LibreCAD可以说是QCAD的分支版本。对比这款开源软件,发现QCAD的功能与操作习惯和AutoCAD更接近。LibreCAD是纯C++开发,而QCAD使用了Qt的Script模块,使用了C++和Javascript脚本两种开发方式。我觉得使用脚本来扩展功能比纯C++开发效率会高点,因为这些开源项目源码都很大,编译比较花时间。如果使用脚本来开发的话,没有编译时间,可以边写脚本边测试,很方便。
下面两个分别是LibreCAD和QCAD中显示图形属性的界面,可以看到QCAD感觉更好。

Figure 1. LibreCAD Main GUI

Figure 2. QCAD Main GUI
QCAD的编译很简单,从 https://github.com/qcad/qcad 下载源码后,就可以直接编译了。其依赖的相关第三方库都已经包含在源码中。下面就以在Windows操作系统中使用VS2008来编译QCAD-3.20.1.2为例来说明其编译需要注意的问题。考虑到Qt4相关的dll文件较少,所以选择Qt4.8.6和Visual Studio2008来编译QCAD。
在VS中使用Qt可以使用QtVSAddin,安装好QtVSAddin后会在VS的菜单上出现一个Qt菜单:

Figure 3. QtVSAddin Menu in VS2008
从Qt插件的菜单中的Open Qt Project File来打开qcad源码文件中的qcad.pro,会生成qcad.sln的VS解决方案文件,并在VS2008打开了解决方案。

Figure 4. QCad source code in VS2008
编译到RScriptHandlerEcma.cpp文件时,遇到几个QPrinterInfo静态函数的问题,因为qcad-3.20.1.2中推荐使用Qt5.5.1,而这几个静态函数是从Qt5.3版本才引入的。所以找到Qt5.3中相关的源码,把关于QPrinterInfo的几个静态函数在这里重写。从字面上看这几个函数是与打印相关的,如果不使用打印相关功能,可以直接把这几个错误注释掉。
因为qcad与界面相关的功能都是用JavaScript脚本实现,所以还需要编译Qt的脚本实现。找到源码的src目录中的3rdparty文件夹中与Qt版本对应的qt-labs-qtscriptgenerator,里面会已经生成了VS的解决方案。直接用VS打开解决方案,全部编译即可。



Figure 5.编译qt script
编译成功后,文件都会生成在指定的目录中,直接打开源码下面的debug文件中的qcad.exe即可以运行QCAD了。

Figure 6. 运行编译的QCAD
编译QCAD的更多相关文章
- TODO:macOS编译PHP7.1
TODO:macOS编译PHP7.1 本文主要介绍在macOS上编译PHP7.1,有兴趣的朋友可以去尝试一下. 1.下载PHP7.1源码,建议到PHP官网下载纯净到源码包php-7.1.0.tar.g ...
- Centos6.5下编译安装mysql 5.6
一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm -qa | grep mysql 有的话通过下面的命令来卸载掉 rpm -e mysql //普通删除模式 rpm -e ...
- CENTOS 6.5 平台离线编译安装 PHP5.6.6
一.下载php源码包 http://cn2.php.net/get/php-5.6.6.tar.gz/from/this/mirror 二.编译 编译之前可能会缺少一些必要的依赖包,加载一个本地yum ...
- CENTOS 6.5 平台离线编译安装 Mysql5.6.22
一.下载源码包 http://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.22.tar.gz 二.准备工作 卸载之前本机自带的MYSQL 安装 cmake,编 ...
- Android注解使用之注解编译android-apt如何切换到annotationProcessor
前言: 自从EventBus 3.x发布之后其通过注解预编译的方式解决了之前通过反射机制所引起的性能效率问题,其中注解预编译所采用的的就是android-apt的方式,不过最近Apt工具的作者宣布了不 ...
- Hawk 6. 编译和扩展开发
Hawk是开源项目,因此任何人都可以为其贡献代码.作者也非常欢迎使用者能够扩展出更有用的插件. 编译 编译需要Visual Stuido,版本建议使用2015, 2010及以上没有经过测试,但应该可以 ...
- android studio 使用 jni 编译 opencv 完整实例 之 图像边缘检测!从此在andrid中自由使用 图像匹配、识别、检测
目录: 1,过程感慨: 2,运行环境: 3,准备工作: 4,编译 .so 5,遇到的关键问题及其解决方法 6,实现效果截图. (原创:转载声明出处:http://www.cnblogs.com/lin ...
- 在Windows上编译和调试CoreCLR
生成CoreCLR - Windows篇 本文的唯一目的就是让你运行Hello World 运行环境 Window 7+ Visual studio 2015 确保C++ 工具已经被安装,默认是不安装 ...
- 【踩坑速记】二次依赖?android studio编译运行各种踩坑解决方案,杜绝弯路,总有你想要的~
这篇博客,只是把自己在开发中经常遇到的打包编译问题以及解决方案给大家稍微分享一下,不求吸睛,但求有用. 1.大家都知道我们常常会遇到dex超出方法数的问题,所以很多人都会采用android.suppo ...
随机推荐
- bzoj1831: [AHOI2008]逆序对(DP+双精bzoj1786)
1831: [AHOI2008]逆序对 Description 小可可和小卡卡想到Y岛上旅游,但是他们不知道Y岛有多远.好在,他们找到一本古老的书,上面是这样说的: 下面是N个正整数,每个都在1~K之 ...
- MDNS的漏洞报告——mdns的最大问题是允许广域网的mdns单播查询,这会暴露设备信息,或者被利用用于dns放大攻击
Vulnerability Note VU#550620 Multicast DNS (mDNS) implementations may respond to unicast queries ori ...
- [转]60fps on the mobile web
Flipboard launched during the dawn of the smartphone and tablet as a mobile-first experience, allowi ...
- jquery easyui ajax data属性传值方式
$.ajax({ url:url, type:'post', data:data, dataType:'json', contentType: "application/ ...
- OpenGL编程(二)绘制矩形
上次只是创建了一个简单的窗口,把背景颜色修改为蓝色(默认是黑色),并没有向窗口添加任何图形.这次在上次代码的基础上往窗口中添加一个矩形,设置矩形的颜色,大小等. 1.添加矩形 在(参考上次代码)ren ...
- sql索引碎片产生的原理 解决碎片的办法(sql碎片整理)
本文讲述了SQL SERVER中碎片产生的原理,内部碎片和外部碎片的概念.以及解决碎片的办法和填充因子.在数据库中,往往每一个对于某一方面性能增加的功能也会伴随着另一方面性能的减弱.系统的学习数据库知 ...
- 51Nod 蜥蜴和地下室(搜索)
哈利喜欢玩角色扮演的电脑游戏<蜥蜴和地下室>.此时,他正在扮演一个魔术师.在最后一关,他必须和一排的弓箭手战斗.他唯一能消灭他们的办法是一个火球咒语.如果哈利用他的火球咒语攻击第i个弓箭手 ...
- 使用WinNTSetup安装win10时提示efi part有红叉(win10安装UEFI系统安装)
1.装载ImDisk虚拟磁盘 2.格式化硬盘 *格式化时注意”创建新ESP分区 3.使用 WinNTSetup 选择win10安装程序 *1. “BOOTMGR PBR "后有感叹号不用管, ...
- Redis数据持久化的两种方式RDB和AOF
由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数据保存到磁 盘上,当redis重启后,可以从磁盘中恢复数据.redis提 ...
- Entity Framework的一个实例
环境:Visual studio2013+sql server本地数据库 创建一个C#应用程序,首先在nuget中添加Entity Framework 接下来的工作分为四个主要部分: 第一部分:App ...