0.FreeCAD0.19+VS2022+Windows编译教程

这篇教程详细介绍了如何在Windows上使用Visual Studio 2022编译FreeCAD0.19,重点是修改编译规则以利用已安装的Qt和PCL库,避免额外配置。教程涵盖了设置FREECAD_LIBPACK_DIR、选择C++14标准、启用BUILD_QT5选项,以及处理编译过程中遇到的错误,如qstring.h错误和PCL宏定义问题。
摘要由CSDN通过智能技术生成

本教程重点在于更改编译规则,使用某些电脑上已有第三方库进行编译,比如已经安装的Qt、Pcl等库
旨在修改之后,后续编译不需要再调整任何选项

0.Overview

1.下载源码:
FreeCAD0.19源码
FreeCADLibs
FreeCADLibs中包含了FreeCAD源码中所需要的第三方库
可以新建一个FreeCAD目录,内部子目录FreeCAD-srcFreeCADLibs存放源码和第三方依赖:

FreeCAD:
├─FreeCAD-src #源码解压后第一个有CmakeLists.txt的目录全部copy到此
└─FreeCADLibs #同理

1.修改编译规则

FreeCAD的主要CMake规则在src/cMake中定义,src/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake中定义了BUILD命令,通过修改该文件可以开启或关闭某些模块的编译。通过src/cMake/FreeCAD_Helpers下的SetupXXX.cmake可以更改某些模块的地址。

  1. InitializeFreeCADBuildOptions.cmake
    该文件中定义了BUILD命令,某些BUILD命令为option或cache,可以在cmake-gui中进行修改。不过在该文件中修改,后续编译就可以顺畅进行了。下面为两个示例修改:
  • e.g.1 在if(MSVC)之后定义FREECAD_LIBPACK_DIR【修改成你的地址
if (NOT DEFINED FREECAD_LIBPACK_DIR)
	set(FREECAD_LIBPACK_DIR "/your/libpack/path" CACHE PATH "Path to FreeCAD Libpack directory")
	#`CACHE`关键字用于将变量设置为缓存变量,之后可以在cmake-gui中进行修改
endif()
  • e.g.2 更改c++14标准
set(BUILD_ENABLE_CXX_STD "c++14" CACHE STRING "C++ standard to be used" FORCE)
  • e.g.3 设置BUILD_QT5为True(需要删除原本的定义)
option(BUILD_QT5 "Build with Qt5." ON)
# 直接添加该命令,然后删除原本的BUILD_QT5判断命令,后续我们会修改Qt5的目录,不使用FreeCADLibs中的Qt5库
# ----------------------------
# 删除以下原有内容(两段)
if (EXISTS ${FREECAD_LIBPACK_DIR}/lib/Qt5Core.lib)
	option(BUILD_QT5 "Build with Qt5." ON)
else()
	option(BUILD_QT5 "Build with Qt5." OFF)
endif()
  • 设置三个FREECAD_COPY选项为ON(搜索以下命令)
FREECAD_COPY_DEPEND_DIRS_TO_BUILD
FREECAD_COPY_LIBPACK_BIN_TO_BUILD
FREECAD_COPY_PLUGINS_BIN_TO_BUILD
  1. SetupQt.cmake
    elseif (BUILD_QT5)下面添加,由于电脑上qt版本过多,直接用脚本提取了指定版本中的所有文件夹,实际不需要这么多路径,而且可能有更好的做法。
    除了修改该文件,在使用vs编译FreeCAD时,你需要删除掉FreeCADLibs/include文件夹下所有和Qt相关的文件夹,否则include相关头文件时会出错。
# set Qt5
	set(Qt5_ROOT_DIR "D:/Qt/5.15.2/msvc2019_64" CACHE PATH "Path to Qt5 CMake configuration files" FORCE)
	set(Qt5_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5" CACHE PATH "Path to Qt5 CMake configuration files" FORCE)
	set(Qt53DAnimation_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt53DAnimation" CACHE PATH "Path to Qt53DAnimation CMake configuration files" FORCE)
	set(Qt53DCore_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt53DCore" CACHE PATH "Path to Qt53DCore CMake configuration files" FORCE)
	set(Qt53DExtras_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt53DExtras" CACHE PATH "Path to Qt53DExtras CMake configuration files" FORCE)
	set(Qt53DInput_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt53DInput" CACHE PATH "Path to Qt53DInput CMake configuration files" FORCE)
	set(Qt53DLogic_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt53DLogic" CACHE PATH "Path to Qt53DLogic CMake configuration files" FORCE)
	set(Qt53DQuick_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt53DQuick" CACHE PATH "Path to Qt53DQuick CMake configuration files" FORCE)
	set(Qt53DQuickAnimation_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt53DQuickAnimation" CACHE PATH "Path to Qt53DQuickAnimation CMake configuration files" FORCE)
	set(Qt53DQuickExtras_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt53DQuickExtras" CACHE PATH "Path to Qt53DQuickExtras CMake configuration files" FORCE)
	set(Qt53DQuickInput_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt53DQuickInput" CACHE PATH "Path to Qt53DQuickInput CMake configuration files" FORCE)
	set(Qt53DQuickRender_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt53DQuickRender" CACHE PATH "Path to Qt53DQuickRender CMake configuration files" FORCE)
	set(Qt53DQuickScene2D_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt53DQuickScene2D" CACHE PATH "Path to Qt53DQuickScene2D CMake configuration files" FORCE)
	set(Qt53DRender_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt53DRender" CACHE PATH "Path to Qt53DRender CMake configuration files" FORCE)
	set(Qt5AccessibilitySupport_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5AccessibilitySupport" CACHE PATH "Path to Qt5AccessibilitySupport CMake configuration files" FORCE)
	set(Qt5AttributionsScannerTools_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5AttributionsScannerTools" CACHE PATH "Path to Qt5AttributionsScannerTools CMake configuration files" FORCE)
	set(Qt5AxBase_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5AxBase" CACHE PATH "Path to Qt5AxBase CMake configuration files" FORCE)
	set(Qt5AxContainer_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5AxContainer" CACHE PATH "Path to Qt5AxContainer CMake configuration files" FORCE)
	set(Qt5AxServer_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5AxServer" CACHE PATH "Path to Qt5AxServer CMake configuration files" FORCE)
	set(Qt5Bluetooth_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Bluetooth" CACHE PATH "Path to Qt5Bluetooth CMake configuration files" FORCE)
	set(Qt5Bodymovin_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Bodymovin" CACHE PATH "Path to Qt5Bodymovin CMake configuration files" FORCE)
	set(Qt5Charts_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Charts" CACHE PATH "Path to Qt5Charts CMake configuration files" FORCE)
	set(Qt5Concurrent_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Concurrent" CACHE PATH "Path to Qt5Concurrent CMake configuration files" FORCE)
	set(Qt5Core_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Core" CACHE PATH "Path to Qt5Core CMake configuration files" FORCE)
	set(Qt5DataVisualization_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5DataVisualization" CACHE PATH "Path to Qt5DataVisualization CMake configuration files" FORCE)
	set(Qt5DBus_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5DBus" CACHE PATH "Path to Qt5DBus CMake configuration files" FORCE)
	set(Qt5Designer_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Designer" CACHE PATH "Path to Qt5Designer CMake configuration files" FORCE)
	set(Qt5DesignerComponents_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5DesignerComponents" CACHE PATH "Path to Qt5DesignerComponents CMake configuration files" FORCE)
	set(Qt5DeviceDiscoverySupport_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5DeviceDiscoverySupport" CACHE PATH "Path to Qt5DeviceDiscoverySupport CMake configuration files" FORCE)
	set(Qt5DocTools_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5DocTools" CACHE PATH "Path to Qt5DocTools CMake configuration files" FORCE)
	set(Qt5EdidSupport_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5EdidSupport" CACHE PATH "Path to Qt5EdidSupport CMake configuration files" FORCE)
	set(Qt5EglSupport_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5EglSupport" CACHE PATH "Path to Qt5EglSupport CMake configuration files" FORCE)
	set(Qt5EventDispatcherSupport_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5EventDispatcherSupport" CACHE PATH "Path to Qt5EventDispatcherSupport CMake configuration files" FORCE)
	set(Qt5FbSupport_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5FbSupport" CACHE PATH "Path to Qt5FbSupport CMake configuration files" FORCE)
	set(Qt5FontDatabaseSupport_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5FontDatabaseSupport" CACHE PATH "Path to Qt5FontDatabaseSupport CMake configuration files" FORCE)
	set(Qt5Gamepad_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Gamepad" CACHE PATH "Path to Qt5Gamepad CMake configuration files" FORCE)
	set(Qt5Gui_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Gui" CACHE PATH "Path to Qt5Gui CMake configuration files" FORCE)
	set(Qt5Help_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Help" CACHE PATH "Path to Qt5Help CMake configuration files" FORCE)
	set(Qt5LinguistTools_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5LinguistTools" CACHE PATH "Path to Qt5LinguistTools CMake configuration files" FORCE)
	set(Qt5Location_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Location" CACHE PATH "Path to Qt5Location CMake configuration files" FORCE)
	set(Qt5Multimedia_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Multimedia" CACHE PATH "Path to Qt5Multimedia CMake configuration files" FORCE)
	set(Qt5MultimediaQuick_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5MultimediaQuick" CACHE PATH "Path to Qt5MultimediaQuick CMake configuration files" FORCE)
	set(Qt5MultimediaWidgets_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5MultimediaWidgets" CACHE PATH "Path to Qt5MultimediaWidgets CMake configuration files" FORCE)
	set(Qt5Network_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Network" CACHE PATH "Path to Qt5Network CMake configuration files" FORCE)
	set(Qt5NetworkAuth_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5NetworkAuth" CACHE PATH "Path to Qt5NetworkAuth CMake configuration files" FORCE)
	set(Qt5Nfc_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Nfc" CACHE PATH "Path to Qt5Nfc CMake configuration files" FORCE)
	set(Qt5OpenGL_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5OpenGL" CACHE PATH "Path to Qt5OpenGL CMake configuration files" FORCE)
	set(Qt5OpenGLExtensions_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5OpenGLExtensions" CACHE PATH "Path to Qt5OpenGLExtensions CMake configuration files" FORCE)
	set(Qt5PacketProtocol_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5PacketProtocol" CACHE PATH "Path to Qt5PacketProtocol CMake configuration files" FORCE)
	set(Qt5PlatformCompositorSupport_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5PlatformCompositorSupport" CACHE PATH "Path to Qt5PlatformCompositorSupport CMake configuration files" FORCE)
	set(Qt5Positioning_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Positioning" CACHE PATH "Path to Qt5Positioning CMake configuration files" FORCE)
	set(Qt5PositioningQuick_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5PositioningQuick" CACHE PATH "Path to Qt5PositioningQuick CMake configuration files" FORCE)
	set(Qt5PrintSupport_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5PrintSupport" CACHE PATH "Path to Qt5PrintSupport CMake configuration files" FORCE)
	set(Qt5Purchasing_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Purchasing" CACHE PATH "Path to Qt5Purchasing CMake configuration files" FORCE)
	set(Qt5Qml_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Qml" CACHE PATH "Path to Qt5Qml CMake configuration files" FORCE)
	set(Qt5QmlDebug_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5QmlDebug" CACHE PATH "Path to Qt5QmlDebug CMake configuration files" FORCE)
	set(Qt5QmlDevTools_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5QmlDevTools" CACHE PATH "Path to Qt5QmlDevTools CMake configuration files" FORCE)
	set(Qt5QmlImportScanner_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5QmlImportScanner" CACHE PATH "Path to Qt5QmlImportScanner CMake configuration files" FORCE)
	set(Qt5QmlModels_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5QmlModels" CACHE PATH "Path to Qt5QmlModels CMake configuration files" FORCE)
	set(Qt5QmlWorkerScript_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5QmlWorkerScript" CACHE PATH "Path to Qt5QmlWorkerScript CMake configuration files" FORCE)
	set(Qt5Quick_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Quick" CACHE PATH "Path to Qt5Quick CMake configuration files" FORCE)
	set(Qt5Quick3D_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Quick3D" CACHE PATH "Path to Qt5Quick3D CMake configuration files" FORCE)
	set(Qt5Quick3DAssetImport_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Quick3DAssetImport" CACHE PATH "Path to Qt5Quick3DAssetImport CMake configuration files" FORCE)
	set(Qt5Quick3DRender_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Quick3DRender" CACHE PATH "Path to Qt5Quick3DRender CMake configuration files" FORCE)
	set(Qt5Quick3DRuntimeRender_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Quick3DRuntimeRender" CACHE PATH "Path to Qt5Quick3DRuntimeRender CMake configuration files" FORCE)
	set(Qt5Quick3DUtils_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Quick3DUtils" CACHE PATH "Path to Qt5Quick3DUtils CMake configuration files" FORCE)
	set(Qt5QuickCompiler_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5QuickCompiler" CACHE PATH "Path to Qt5QuickCompiler CMake configuration files" FORCE)
	set(Qt5QuickControls2_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5QuickControls2" CACHE PATH "Path to Qt5QuickControls2 CMake configuration files" FORCE)
	set(Qt5QuickParticles_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5QuickParticles" CACHE PATH "Path to Qt5QuickParticles CMake configuration files" FORCE)
	set(Qt5QuickShapes_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5QuickShapes" CACHE PATH "Path to Qt5QuickShapes CMake configuration files" FORCE)
	set(Qt5QuickTemplates2_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5QuickTemplates2" CACHE PATH "Path to Qt5QuickTemplates2 CMake configuration files" FORCE)
	set(Qt5QuickTest_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5QuickTest" CACHE PATH "Path to Qt5QuickTest CMake configuration files" FORCE)
	set(Qt5QuickWidgets_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5QuickWidgets" CACHE PATH "Path to Qt5QuickWidgets CMake configuration files" FORCE)
	set(Qt5RemoteObjects_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5RemoteObjects" CACHE PATH "Path to Qt5RemoteObjects CMake configuration files" FORCE)
	set(Qt5RepParser_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5RepParser" CACHE PATH "Path to Qt5RepParser CMake configuration files" FORCE)
	set(Qt5Script_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Script" CACHE PATH "Path to Qt5Script CMake configuration files" FORCE)
	set(Qt5ScriptTools_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5ScriptTools" CACHE PATH "Path to Qt5ScriptTools CMake configuration files" FORCE)
	set(Qt5Scxml_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Scxml" CACHE PATH "Path to Qt5Scxml CMake configuration files" FORCE)
	set(Qt5Sensors_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Sensors" CACHE PATH "Path to Qt5Sensors CMake configuration files" FORCE)
	set(Qt5SerialBus_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5SerialBus" CACHE PATH "Path to Qt5SerialBus CMake configuration files" FORCE)
	set(Qt5SerialPort_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5SerialPort" CACHE PATH "Path to Qt5SerialPort CMake configuration files" FORCE)
	set(Qt5Sql_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Sql" CACHE PATH "Path to Qt5Sql CMake configuration files" FORCE)
	set(Qt5Svg_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Svg" CACHE PATH "Path to Qt5Svg CMake configuration files" FORCE)
	set(Qt5Test_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Test" CACHE PATH "Path to Qt5Test CMake configuration files" FORCE)
	set(Qt5TextToSpeech_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5TextToSpeech" CACHE PATH "Path to Qt5TextToSpeech CMake configuration files" FORCE)
	set(Qt5ThemeSupport_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5ThemeSupport" CACHE PATH "Path to Qt5ThemeSupport CMake configuration files" FORCE)
	set(Qt5UiPlugin_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5UiPlugin" CACHE PATH "Path to Qt5UiPlugin CMake configuration files" FORCE)
	set(Qt5UiTools_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5UiTools" CACHE PATH "Path to Qt5UiTools CMake configuration files" FORCE)
	set(Qt5VirtualKeyboard_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5VirtualKeyboard" CACHE PATH "Path to Qt5VirtualKeyboard CMake configuration files" FORCE)
	set(Qt5VulkanSupport_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5VulkanSupport" CACHE PATH "Path to Qt5VulkanSupport CMake configuration files" FORCE)
	set(Qt5WebChannel_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5WebChannel" CACHE PATH "Path to Qt5WebChannel CMake configuration files" FORCE)
	set(Qt5WebEngine_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5WebEngine" CACHE PATH "Path to Qt5WebEngine CMake configuration files" FORCE)
	set(Qt5WebEngineCore_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5WebEngineCore" CACHE PATH "Path to Qt5WebEngineCore CMake configuration files" FORCE)
	set(Qt5WebEngineWidgets_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5WebEngineWidgets" CACHE PATH "Path to Qt5WebEngineWidgets CMake configuration files" FORCE)
	set(Qt5WebSockets_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5WebSockets" CACHE PATH "Path to Qt5WebSockets CMake configuration files" FORCE)
	set(Qt5WebView_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5WebView" CACHE PATH "Path to Qt5WebView CMake configuration files" FORCE)
	set(Qt5Widgets_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Widgets" CACHE PATH "Path to Qt5Widgets CMake configuration files" FORCE)
	set(Qt5WindowsUIAutomationSupport_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5WindowsUIAutomationSupport" CACHE PATH "Path to Qt5WindowsUIAutomationSupport CMake configuration files" FORCE)
	set(Qt5WinExtras_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5WinExtras" CACHE PATH "Path to Qt5WinExtras CMake configuration files" FORCE)
	set(Qt5Xml_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Xml" CACHE PATH "Path to Qt5Xml CMake configuration files" FORCE)
	set(Qt5XmlPatterns_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5XmlPatterns" CACHE PATH "Path to Qt5XmlPatterns CMake configuration files" FORCE)
	set(Qt5Zlib_DIR "${Qt5_ROOT_DIR}/lib/cmake/Qt5Zlib" CACHE PATH "Path to Qt5Zlib CMake configuration files" FORCE)

3.SetupBoost.cmake
注意:FreeCAD需要使用boost库中的python,保证你的boost是完全安装的!
boost库编译教程
运行bootstarp.bat生成b2.exe,使用b2.exe来编译(b2 install)
你需要删除掉FreeCADLibs/include/boost文件夹

	# 设置 Boost 库的根目录,即你电脑上 Boost 库的安装路径
	set(BOOST_ROOT "D:/LIBRARY/Boost/boost_1_83_0/build" CACHE PATH "PATH to include" FORCE)
    # 设置 Boost 库的 include 目录
    set(Boost_INCLUDE_DIR "${BOOST_ROOT}/include" CACHE PATH "PATH to include" FORCE)
    # 设置 Boost 库的库文件目录
    set(Boost_LIBRARY_DIR "${BOOST_ROOT}/lib" CACHE PATH "Path " FORCE)
  1. SetupPCL.cmake【暂时有误】
# 设置 PCL 库的根目录,即你电脑上 PCL 库的安装路径
    set(PCL_ROOT "D:/LIBRARY/PCL 1.12.1")
    # 设置 PCL 库的 include 目录
    set(PCL_INCLUDE_DIR "${PCL_ROOT}/include/pcl-1.12")
    # 设置 PCL 库的库文件目录
    set(PCL_LIBRARY_DIR "${PCL_ROOT}/lib")
	# 设置 PCL 库的cmake路径
	set(PCL_DIR "${PCL_ROOT}/cmake")
	
	set(VTK_INCLUDE_DIR "D:/LIBRARY/PCL 1.12.1/3rdParty/VTK/include/vtk-9.1")
	set(VTK_LIBRARY_DIR "D:/LIBRARY/PCL 1.12.1/3rdParty/VTK/lib")

2.编译错误处理

  1. qstring.h错误:前面有提到,如果使用电脑上已经安装的Qt库,则需要删除FreeCADLibs/include下所有Qt相关文件夹
  2. C2001:常量中有换行符
// 找到错误位置代码,应该有三处,其中一处如下:
throw Base::IndexError(std::string("Thread type ‘") + thread_type_string + "’ unsupported");
// 修改单引号:
throw Base::IndexError(std::string("Thread type '") + thread_type_string + "' unsupported");
  1. C2169:“log2f”:内部函数,不能定义
    定位到pcl_macros.h中,Ctrl+F将log2f替换成log2_f

编译完成后,设置FreeCADMain项目为启动项

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: FreeCAD 0.19 x64 是一个开源的三维 CAD 设计软件,它支持多种平台,如 Windows、Linux 和 Mac OS。使用 FreeCAD,用户可以设计和制作物理对象,从简单的三维对象到复杂的装配体都可以轻松完成。它拥有类似于 AutoCAD 的用户接口,使得绘图、修改、建模和分析变得容易。同时,FreeCAD 也支持多种流行的文件格式,如 STEP、STL、IGES、OBJ 和 DXF 等。用户可以导入和导出这些文件格式,方便与其他设计软件进行互操作。 FreeCAD 0.19 x64 还具有许多其他的特性,如建模工具、渲染引擎、绘图工具和动画工具等。这些特性使得设计过程变得更加高效和直观。同时,开发团队也致力于不断改进软件,提供更多的功能和性能,以满足用户需求。最重要的是,FreeCAD 是完全免费的,这使得它成为许多用户选择的首选软件。 总的来说,FreeCAD 0.19 x64 是一个非常强大且易于使用的三维 CAD 设计软件,它拥有多种特性和格式支持,是制作物理对象的理想工具。它的免费和开源特性也让用户能够享受到高质量的设计软件,无需付出昂贵的费用。 ### 回答2: FreeCAD 0.19 x64是一款免费的开源计算机辅助设计(CAD)软件。它提供了一套功能强大的工具,可用于创建三维模型和设计各种不同类型的物体。 FreeCAD 0.19 x64具有直观的用户界面,可以轻松地进行操作。它支持多种文件格式,包括STEP、IGES、OBJ和STL,因此可以与其他CAD软件很好地集成。 其主要特点之一是具有模块化的架构,允许用户根据自己的需求进行定制。它拥有许多不同的工作台,如Part Design、Sketcher、Draft和Arch,每个工作台都专注于不同的设计方面,使用户能够更专注地进行建模。 在FreeCAD 0.19 x64中,用户可以通过简单的拖放操作创建基本几何体,如立方体、球体和圆柱体,还可以使用强大的参数化工具对模型进行修改和调整。 除了基本的建模工具外,FreeCAD 0.19 x64还提供了一些高级功能,如装配体建模和动画仿真。用户可以创建复杂的装配体,并对其进行分析和评估。 总的来说,FreeCAD 0.19 x64是一款功能全面且易于使用的CAD软件。无论是专业设计师还是业余爱好者,都可以使用它来创建精确的三维模型,并实现各种设计目标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骨骼建模师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值