FreeCAD编译、安装、开发环境

FreeCAD编译、安装、开发环境

济南友泉软件有限公司

一、 获取源码

1.1 Git

FreeCAD使用Git进行代码版本管理,因此需要下载安装Git工具用于代码下载以及后期代码开发维护等工作。

在Windows平台下,Git客户端具有命令行与GUI两种模式。本教程使用命令行模式下载、管理FreeCAD的代码。下载链接

1.2 创建FreeCAD私人仓库

登录GitHub网站,搜索FreeCAD,然后点击Fork按钮,创建FreeCAD的私人Git仓库。
在这里插入图片描述

1.3 新建工作目录

为了下载FreeCAD代码,在E:\YouQuan\CaeFrameworks目录下新建FreeCAD目录,然后进入E:\YouQuan\CaeFrameworks\FreeCAD目录,右键选择“Git Bash Here”,然后会弹出Git的命令行窗口。
在这里插入图片描述

1.4 下载代码

复制私人仓库中FreeCAD地址,
在这里插入图片描述

然后通过命令行下载FreeCAD代码,运行

git clone 私人仓库FreeCAD或者官方FreeCAD仓库地址

同时,为了后续同步FreeCAD社区代码,配置上游仓库upstream,

cd ./FreeCAD/
git remote add upstream https://github.com/FreeCAD/FreeCAD.git
git remote -v

注意:

  1. 下载速度受网络环境及时间段的影响
  2. 经过测试,在凌晨3点到6点下载国外Git仓库代码,网络性能比较好。

1.5 创建本地FreeCAD分支

不建议直接在本地master分支上进行开发,推荐创建分支用于FreeCAD的开发测试等工作。

在Git命令行窗口中运行一下命令,

git checkout -b acise origin/releases/FreeCAD-0-18

二、 构建项目

2.1. CMake

CMake是一个用于生成不同平台下构建项目的工具。Windows系统下编译FreeCAD,首先要根据FreeCAD对应版本的CMakeLists.txt生成Visual Studio的项目文件。下载链接

注意:

  1. 需要按照FreeCAD版本的说明,下载合适的CMake版本,需要下载版本号为11.x - 3.14.x****之间的CMake.

2.2. LibPack

为方便Windows平台下的编译,FreeCAD提供了编译FreeCAD的第三方依赖包LibPack

LibPack的版本要根据FreeCAD版本、操作系统、编译器等进行确定。使用VS 2017编译FreeCAD-0.18,可以下载对应的LibPack-0.19

2.3. Visual Studio

VS 2017包含社区版、专业版、企业版等三个版本。对于一般开发而言,三个版本的差别不大。免费的社区版一样可以满足程序员需求,所以推荐使用社区版,无需破解,轻松安装,快速使用。VS 2017社区版下载链接

注意:

  1. 安装VS 2017 Community版本,需要事先安装6.2版本以上的.Net Framework。
  2. VS 2017 Community提供了30天的免费试用,为了长久的使用VS 2017 Community版本,需要在软件内注册注册一个账号。
  3. 安装VS 2017 Community版本时,最好同时勾选
    在这里插入图片描述

2.4. 创建构建目录

在FreeCAD代码所在同级目录创建BUILD、INSTALL目录,并将下载的LibPack-0.19解压到该目录下。
在这里插入图片描述

2.5. 生成构建项目

  1. 指定Source目录及其Build目录
    在这里插入图片描述
  2. 点击Configure进行变量配置
    在这里插入图片描述

Configure报错提示” 找不到fc_wrap_cpp”,
在这里插入图片描述

  1. 配置configure环境变量

配置“FREECAD_LIBPACK_DIR”为解压后FreeCADLib_12.1.2_x64_VC15目录,同时勾选“BUILD_QT5”,然后重新进行“Configure”。

  1. 配置安装目录

根据需要,可以指定编译生成的程序的安装目录,通过CMAKE_INSTALL_PREFIX进行指定。

  1. 生成项目

点击“Generate”生成工程项目。


三、 配置Visual Studio

3.1. 安装Qt VS Tools

  • 在线安装

打开Visual Studio,在“Extensions”菜单下选择“Manage Extensions”,然后搜索Qt的插件,点击“Download”自动完成下载安装。
在这里插入图片描述

  • 离线安装

由于受网络环境的影响,在VS中直接下载安装Qt VS Tools可能比较慢,可以选择下载Qt VS Tools,然后手动安装。下载链接
在这里插入图片描述

下载qt-vsaddin-msvc2017-2.4.2-rev.14.vsix之后,双击文件直接安装,
在这里插入图片描述

3.2. 配置Qt环境

由于FreeCAD使用Qt作为界面开发库,因此,为了方便FreeCAD的开发,最好集成Qt的开发工具、头文件、帮助文档等Qt开发环境。

FreeCAD对应版本的LibPack(对于本教程是FreeCADLibs_12.1.2_x64_VC15)自带了Qt必要的开发工具,因此只需要作相应的配置便可在VS中集成Qt的开发环境。

另外,也可以自行下载安装对应版本的Qt,然后配置Qt VS Tools以使用下载的Qt开发环境。

幸运的是,Qt VS Tools允许多个Qt开发环境同时存在,而且可以书瞬间完成Qt开发环境的切换。

3.2.1. 使用LibPack中的Qt

安装完毕之后,发现VS菜单栏多了一个“Qt VS Tools”的菜单,在该菜单下选择“Qt Options”设置Qt版本名字及其安装目录
在这里插入图片描述

3.2.2. 下载Qt

进入FreeCADLibs_12.1.2_x64_VC15\bin目录下,打开qtenv2.bat文件来查看对应的Qt版本为Qt5.12.1,然后去Qt网站下载。下载链接
在这里插入图片描述
安装包qt-opensource-windows-x86-5.12.1.exe下载之后,进行安装。
在这里插入图片描述在这里插入图片描述在这里插入图片描述

3.3. Python(可选)

虽然VS 2017社区版、LibPack已经包含了Python,但是为了方便开发与测试,最好单独安装一个Python。下载链接

注意:

  1. Python版本要求使用Python3。
  2. 最好不要使用最新的Python,而是选择一个较为稳定的版本,比如对于FreeCAD-0.18,推荐Python 3.6。

3.4. 编译安装FreeCAD

在VS 2017中,build INSTALL项目,即可在安装目录(INSTALL\FreeCAD_trunk)下生成响应的可执行文件。

3.5. 调试环境配置(一):编辑qt.conf

当发布Qt程序时,可以通过便捷qt.conf文件覆盖Qt内置的搜索路径(头文件、可执行文件、动态链接库、插件等)。

为了节省磁盘空间及方便编译调试,在BUILD\bin内创建qt.conf文件,并添加以下内容:

[Paths]
Prefix=E:/YouQuan/CaeFrameworks/FreeCAD/FreeCADLibs_12.5.4_x64_VC17
Plugins=plugins
Translations=translations

注意:上述Prefix路径一定要采用‘/’而不能使用‘\’。

同时,修改FreeCADMain项目Debugging环境变量:
在这里插入图片描述

3.6. 调试环境配置(二):修改启动程序

将FreeCADLibs_12.1.2_x64_VC15目录下所有内容拷贝到INSTALL\FreeCAD_trunk目录下,
在这里插入图片描述
然后,将FreeCADMain设置为“StartUp Project”,然后配置FreeCADMain项目属性,将Debuging\Command改成INSTALL\FreeCAD_trunk\bin\FreeCAD_d.exe
在这里插入图片描述


四、 递交代码

4.1. 创建CFD模块

目前(截止到FreeCAD 0.19_pre版本),FreeCAD中暂无一个模块用于后处理可视化。笔者参考Fem模块的部分后处理功能,开发了用于CFD后处理模块。
在FreeCAD/src/Mode中加入CFD模块的代码,修改src/CMakefiles.txt
在这里插入图片描述

同时修改src/Mod/CMakefiles.txt文件,
在这里插入图片描述

4.2 递交修改

git add ./CMakeLists.txt
git add ./src/Mod/CMakeLists.txt
git add ./src/Mod/Cfd/
git commit -m "Add the CFD module"
git push origin acise

递交代码之后,可以看到自己的GitHub已经显示对应的修改:
在这里插入图片描述


附录A:常见问题

C.1. CMake构建问题

问题:
如何指定编译生成的程序的安装目录?

解决方法:CMake中指定CMake_INSTALL_PREFIX


问题:
CMake Error at src/Base/CMakeLists.txt:187 (fc_wrap_cpp):
Unknown CMake command “fc_wrap_cpp”.

解决方法:CMake中指定正确的FREECAD_LIBPACK_DIR


问题:

Qt QTOPENGL library not found.
Qt QTSVG library not found.
Qt QTUITOOLS library not found.
Qt QTWEBKIT library not found.
Qt QTGUI library not found.
Qt QTXML library not found.
Qt QTNETWORK library not found.
Qt QTCORE library not found.
CMake Error at cMake/FreeCAD_Helpers/SetupQt.cmake:26 (message):
 ========================
 Qt4 libraries not found.

解决方法:CMake中勾选BUILD_QT5



C.2. VS 2017编译问题

问题:
Error C2679 binary ‘<<’: no operator found which takes a right-hand operand of type ‘overloaded-function’ (or there is no acceptable conversion) NETGENPlugin e:\youquan\caeframeworks\freecad\freecad\src\3rdparty\salomesmesh\src\netgenplugin\netgenplugin_mesher.cpp 3590

  outfile << "import SMESH" << endl
          << "from salome.smesh import smeshBuilder" << endl
          << "smesh = smeshBuilder.New(salome.myStudy)" << endl
          << "mesh = smesh.Mesh()" << endl << endl;

解决方法1: CMake生成项目时勾掉“BUILD_FEM_NETGEN”

解决方法2:将”endl”替换成”\n”


问题:

Error C1083 Cannot open include file: ‘pcl/filters/passthrough.h’: No such file or directory ReverseEngineering
e:\youquan\caeframeworks\freecad\freecad\src\mod\reverseengineering\app\appreverseengineering.cpp 51

解决方法1:CMake生成项目时勾掉“BUILD_REVERSEENGINEERING”

解决方法2:将pcl库头文件路径加入到VS “additional Include Directories”中,对于本教程为“E:\YouQuan\CaeFrameworks\FreeCAD\FreeCADLibs_12.1.2_x64_VC15\include\pcl-1.9”


C.3. 调试 运行问题

问题:
FreeCAD启动时Py_Initialize()抛出异常报错?

解决方法:Visual Studio中设置FC_PYTHONHOME

PATH=../../../FreeCADLibs_12.1.2_x64_VC15/bin;$(Path)
FC_PYTHONHOME=../../../FreeCADLibs_12.1.2_x64_VC15/bin

在这里插入图片描述


问题:
FreeCAD加载Sketcher模块时,提示找不到SketcherGui模块。
在这里插入图片描述
解决方法:

参考资料


Module developer’s guide to FreeCAD source code by Qingfeng Xia http://www.iesensor.com • 2015-09-18 version 0.1 for FreeCAD version 0.16-dev • 2016-09-18 version 0.2 for FreeCAD version 0.17-dev License of this book This ebook is licensed the same as FreeCAD document license CC-BY 3.0 http://creativecommons.org/licenses/by/3.0/Contents 1 FreeCAD overview and architecture 7 1.1 Introduction to FreeCAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2 Key features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.3 Software architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.3.1 Key software libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.3.2 Mixed python and c++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.3.3 GPL code will not be included into installer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.4 How 3D model are renderred . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.4.1 Selection of 3D visualization libarary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.4.2 Discussion of 3D rendering library selection on FreeCAD Forum . . . . . . . . . . . . . . . . . . . . . 8 1.5 Roadmap of FreeCAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5.1 Keep updated with main components: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5.2 C++11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5.3 Pyside 2 project for Qt 5.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2 Organisation of FreeCAD source code 11 2.1 Build system for FreeCAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.1.1 Analysis of src/cMake/SMesh.cMake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.2 List of files and folders in FreeCAD source folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.3 List of modules in FreeCAD Mod folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.4 Learning path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.5 Learning OpenInventor/Coin3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.5.1 OpenInventor in FreeCAD’s ViewProvider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.5.2 Important classes in OpenInventor/Coin3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.5.3 Window System integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.5.4 Pivy: Coin3D ’s Python wrapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3 Base, App and Main module 19 3.1 List of header files in Base folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.1.1 Frequently included headers files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.1.2 Correct way of using Sequencer in try-catch block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.1.3 String enconding utf8 and conversion into wchar_t QString . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2 Type, BaseClass, PyObjectBase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2.1 Type system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2.2 src/Base/BaseClass.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.2.3 src/Base/PyObjectBase.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.2.4 src/Base/Persistence.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.2.5 GeoFeature: Base class of all geometric document objects . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.3 Unit scheme for physial quantity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.3.1 src/Base/Unit.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.3.2 src/Base/Quantity.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.4 List of header files in App folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.5 Property framewrok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.5.1 Naming of property and PropertyEditor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.5.2 src/App/PropertyStandard.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.5.3 PropertyEnumeration, see src/App/Enumeration.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.5.4 Geometry related property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.5.5 File related property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 1
评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值