本教程重点在于更改编译规则,使用某些电脑上已有第三方库进行编译,比如已经安装的Qt、Pcl等库
旨在修改之后,后续编译不需要再调整任何选项
0.Overview
1.下载源码:
FreeCAD0.19源码
FreeCADLibs
FreeCADLibs中包含了FreeCAD源码中所需要的第三方库
可以新建一个FreeCAD
目录,内部子目录FreeCAD-src
和FreeCADLibs
存放源码和第三方依赖:
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
可以更改某些模块的地址。
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
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)
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.编译错误处理
- qstring.h错误:前面有提到,如果使用电脑上已经安装的Qt库,则需要删除
FreeCADLibs/include
下所有Qt相关文件夹 - C2001:常量中有换行符
// 找到错误位置代码,应该有三处,其中一处如下:
throw Base::IndexError(std::string("Thread type ‘") + thread_type_string + "’ unsupported");
// 修改单引号:
throw Base::IndexError(std::string("Thread type '") + thread_type_string + "' unsupported");
- C2169:“log2f”:内部函数,不能定义
定位到pcl_macros.h中,Ctrl+F将log2f
替换成log2_f
编译完成后,设置FreeCADMain项目为启动项