|
|
|
@ -5,15 +5,13 @@
|
|
|
|
目标是:
|
|
|
|
目标是:
|
|
|
|
|
|
|
|
|
|
|
|
- 不改源码
|
|
|
|
- 不改源码
|
|
|
|
- 用 Visual Studio 2022 成功编译
|
|
|
|
|
|
|
|
- 能在本机直接运行 FreeCAD
|
|
|
|
- 能在本机直接运行 FreeCAD
|
|
|
|
- 能在 VS 里按 `F5` 调试
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
本文档基于下面这套已经验证成功的组合:
|
|
|
|
本文档基于下面这套已经验证成功的组合:
|
|
|
|
|
|
|
|
|
|
|
|
- 源码分支:`releases/FreeCAD-1-1`
|
|
|
|
- 源码分支:`releases/FreeCAD-1-1`
|
|
|
|
- 源码版本:`1.1.1-28-g94f4cb77f6`
|
|
|
|
- 源码版本:`1.1.1-28-g94f4cb77f6`
|
|
|
|
- 编译器:Visual Studio 2022
|
|
|
|
- 编译器:`cmake`
|
|
|
|
- 构建配置:`RelWithDebInfo | x64`
|
|
|
|
- 构建配置:`RelWithDebInfo | x64`
|
|
|
|
- LibPack:`LibPack-1.1.0-v3.1.1.3-Release`
|
|
|
|
- LibPack:`LibPack-1.1.0-v3.1.1.3-Release`
|
|
|
|
|
|
|
|
|
|
|
|
@ -24,10 +22,10 @@
|
|
|
|
建议按下面这样放:
|
|
|
|
建议按下面这样放:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
```text
|
|
|
|
D:\project\LightWork3D\FreeCAD 源码目录
|
|
|
|
D:\LightWork3D\ 源码目录
|
|
|
|
E:\fc\LibPack-1.1.0-v3.1.1.3-Release 依赖目录
|
|
|
|
D:\LibPack-1.1.0-v3.1.1.3-Release 依赖目录
|
|
|
|
E:\fc\build-relwithdebinfo-libpack3113 构建目录
|
|
|
|
D:\LightWork3D\build 构建目录
|
|
|
|
E:\fc\run-FreeCAD-1.1.1 安装后的运行目录
|
|
|
|
D:\run-FreeCAD-1.1.1 安装后的运行目录
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
不要把所有东西都堆在一个目录里。
|
|
|
|
不要把所有东西都堆在一个目录里。
|
|
|
|
@ -36,36 +34,26 @@ E:\fc\run-FreeCAD-1.1.1 安装后的运行目录
|
|
|
|
|
|
|
|
|
|
|
|
至少准备好这些:
|
|
|
|
至少准备好这些:
|
|
|
|
|
|
|
|
|
|
|
|
1. `Visual Studio 2022`
|
|
|
|
1. `Desktop development with C++` 工作负载
|
|
|
|
2. `Desktop development with C++` 工作负载
|
|
|
|
2. `CMake`
|
|
|
|
3. `CMake`
|
|
|
|
3. `Git`
|
|
|
|
4. `Git`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
建议:
|
|
|
|
建议:
|
|
|
|
|
|
|
|
|
|
|
|
- 用 64 位系统
|
|
|
|
- 用 64 位系统
|
|
|
|
- `E:` 盘最好预留 100GB 以上
|
|
|
|
- `D:` 盘最好预留 100GB 以上
|
|
|
|
- `C:` 和 `D:` 至少各留 30GB 可用空间
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 3. 下载源码
|
|
|
|
## 3. 下载源码
|
|
|
|
|
|
|
|
|
|
|
|
把 FreeCAD 源码放到:
|
|
|
|
`git clone https://git.ngsk.tech/ngskcloud/LightWork3D.git`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
确认在以下目录:
|
|
|
|
```text
|
|
|
|
```text
|
|
|
|
D:\project\LightWork3D\FreeCAD
|
|
|
|
D:\LightWork3D\
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
如果你已经有源码,确认当前分支是:
|
|
|
|
切换到dev分支
|
|
|
|
|
|
|
|
|
|
|
|
```powershell
|
|
|
|
|
|
|
|
git -C D:\project\LightWork3D\FreeCAD rev-parse --abbrev-ref HEAD
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
应该看到:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
|
|
releases/FreeCAD-1-1
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 4. 下载完全匹配的 LibPack
|
|
|
|
## 4. 下载完全匹配的 LibPack
|
|
|
|
|
|
|
|
|
|
|
|
@ -78,81 +66,25 @@ releases/FreeCAD-1-1
|
|
|
|
下载后解压到:
|
|
|
|
下载后解压到:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
```text
|
|
|
|
E:\fc\LibPack-1.1.0-v3.1.1.3-Release
|
|
|
|
D:\LibPack-1.1.0-v3.1.1.3-Release
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
不要用 `3.1.1.2`。
|
|
|
|
不要用 `3.1.1.2`。
|
|
|
|
这份源码配 `3.1.1.2` 时,已经实测会在链接阶段报 `boost::program_options ... contains` 相关错误。
|
|
|
|
这份源码配 `3.1.1.2` 时,已经实测会在链接阶段报 `boost::program_options ... contains` 相关错误。
|
|
|
|
|
|
|
|
|
|
|
|
## 5. 清理磁盘空间
|
|
|
|
## 5. 清理磁盘空间
|
|
|
|
|
|
|
|
确保c盘d盘空间足够
|
|
|
|
如果你之前编过很多次,建议先清理旧构建目录。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
重点清理这些“可再生目录”:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
|
|
旧 build 目录
|
|
|
|
|
|
|
|
旧 LibPack 目录
|
|
|
|
|
|
|
|
下载缓存
|
|
|
|
|
|
|
|
C:\Users\<你的用户名>\AppData\Local\Temp
|
|
|
|
|
|
|
|
C:\Windows\Temp
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
如果你在编译中看到下面这些错误:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
|
|
No space left on device
|
|
|
|
|
|
|
|
磁盘空间不足
|
|
|
|
|
|
|
|
无法创建目录
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
那不是源码问题,就是磁盘满了。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 6. 新建构建目录
|
|
|
|
## 6. 新建构建目录
|
|
|
|
|
|
|
|
|
|
|
|
在 `E:` 盘新建目录:
|
|
|
|
在 `D:\LightWork3D\build ` 构建目录
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
|
|
E:\fc\build-relwithdebinfo-libpack3113
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 7. 用 CMake 生成 VS 工程
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
打开 PowerShell,执行:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```powershell
|
|
|
|
|
|
|
|
$cmake = 'C:\CMake\bin\cmake.exe'
|
|
|
|
|
|
|
|
$src = 'D:\project\LightWork3D\FreeCAD'
|
|
|
|
|
|
|
|
$build = 'E:\fc\build-relwithdebinfo-libpack3113'
|
|
|
|
|
|
|
|
$libpack = 'E:\fc\LibPack-1.1.0-v3.1.1.3-Release'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$env:Path = @(
|
|
|
|
|
|
|
|
'C:\CMake\bin',
|
|
|
|
|
|
|
|
'D:\VisualStudio\MSBuild\Current\Bin',
|
|
|
|
|
|
|
|
'D:\VisualStudio\Common7\IDE',
|
|
|
|
|
|
|
|
'C:\Git\cmd',
|
|
|
|
|
|
|
|
'C:\Windows\System32',
|
|
|
|
|
|
|
|
'C:\Windows',
|
|
|
|
|
|
|
|
'C:\Windows\System32\Wbem',
|
|
|
|
|
|
|
|
'C:\Windows\System32\WindowsPowerShell\v1.0',
|
|
|
|
|
|
|
|
"$libpack\bin",
|
|
|
|
|
|
|
|
"$libpack\lib"
|
|
|
|
|
|
|
|
) -join ';'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
& $cmake `
|
|
|
|
|
|
|
|
-S $src `
|
|
|
|
|
|
|
|
-B $build `
|
|
|
|
|
|
|
|
-G 'Visual Studio 17 2022' `
|
|
|
|
|
|
|
|
-A x64 `
|
|
|
|
|
|
|
|
-D FREECAD_LIBPACK_USE=ON `
|
|
|
|
|
|
|
|
-D FREECAD_LIBPACK_DIR=$libpack `
|
|
|
|
|
|
|
|
-D CMAKE_CONFIGURATION_TYPES=RelWithDebInfo
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
成功后会生成:
|
|
|
|
## 7. 用 CMake 生成工程
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
```bash
|
|
|
|
E:\fc\build-relwithdebinfo-libpack3113\FreeCAD.sln
|
|
|
|
cmake -S D:\LightWork3D -B D:\LightWork3D\bulid
|
|
|
|
|
|
|
|
-DFREECAD_LIBPACK_DIR=D:\LibPack-1.1.0-v3.1.1.3-Release
|
|
|
|
|
|
|
|
-DCMAKE_DISABLE_FIND_PACKAGE_Shiboken6=TRUE
|
|
|
|
|
|
|
|
-DCMAKE_DISABLE_FIND_PACKAGE_PySide6=TRUE
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 8. 编译前先记住一个坑
|
|
|
|
## 8. 编译前先记住一个坑
|
|
|
|
@ -177,26 +109,7 @@ error C1060: 编译器的堆空间不足
|
|
|
|
继续在 PowerShell 里执行:
|
|
|
|
继续在 PowerShell 里执行:
|
|
|
|
|
|
|
|
|
|
|
|
```powershell
|
|
|
|
```powershell
|
|
|
|
$cmake = 'C:\CMake\bin\cmake.exe'
|
|
|
|
cmake --build D:\LightWork3D\bulid --config RelWithDebInfo --target INSTALL --parallel 4
|
|
|
|
$build = 'E:\fc\build-relwithdebinfo-libpack3113'
|
|
|
|
|
|
|
|
$libpack = 'E:\fc\LibPack-1.1.0-v3.1.1.3-Release'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$env:Path = @(
|
|
|
|
|
|
|
|
'C:\CMake\bin',
|
|
|
|
|
|
|
|
'D:\VisualStudio\MSBuild\Current\Bin',
|
|
|
|
|
|
|
|
'D:\VisualStudio\Common7\IDE',
|
|
|
|
|
|
|
|
'C:\Git\cmd',
|
|
|
|
|
|
|
|
'C:\Windows\System32',
|
|
|
|
|
|
|
|
'C:\Windows',
|
|
|
|
|
|
|
|
'C:\Windows\System32\Wbem',
|
|
|
|
|
|
|
|
'C:\Windows\System32\WindowsPowerShell\v1.0',
|
|
|
|
|
|
|
|
"$libpack\bin",
|
|
|
|
|
|
|
|
"$libpack\lib"
|
|
|
|
|
|
|
|
) -join ';'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$env:_CL_ = '/MP1'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
& $cmake --build $build --config RelWithDebInfo --target ALL_BUILD --parallel 1
|
|
|
|
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
说明:
|
|
|
|
说明:
|
|
|
|
@ -211,7 +124,7 @@ $env:_CL_ = '/MP1'
|
|
|
|
很多人编译成功后,第一反应是去点:
|
|
|
|
很多人编译成功后,第一反应是去点:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
```text
|
|
|
|
E:\fc\build-relwithdebinfo-libpack3113\bin\RelWithDebInfo\FreeCAD.exe
|
|
|
|
D:\FreeCAD\bin\RelWithDebInfo\FreeCAD.exe
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
这通常会报各种缺 DLL,比如:
|
|
|
|
这通常会报各种缺 DLL,比如:
|
|
|
|
@ -229,19 +142,19 @@ E:\fc\build-relwithdebinfo-libpack3113\bin\RelWithDebInfo\FreeCAD.exe
|
|
|
|
编译完成后执行:
|
|
|
|
编译完成后执行:
|
|
|
|
|
|
|
|
|
|
|
|
```powershell
|
|
|
|
```powershell
|
|
|
|
$cmake = 'C:\CMake\bin\cmake.exe'
|
|
|
|
cmake --build D:\LightWork3D\bulid --config RelWithDebInfo --target INSTALL
|
|
|
|
$build = 'E:\fc\build-relwithdebinfo-libpack3113'
|
|
|
|
|
|
|
|
$prefix = 'E:\fc\run-FreeCAD-1.1.1'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
& $cmake --install $build --config RelWithDebInfo --prefix $prefix
|
|
|
|
cmake --install D:\LightWork3D\bulid --config RelWithDebInfo --prefix D:\FreeCAD
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
执行完以后,真正建议运行的是:
|
|
|
|
执行完以后,真正建议运行的是:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
```text
|
|
|
|
E:\fc\run-FreeCAD-1.1.1\bin\FreeCAD.exe
|
|
|
|
D:\FreeCAD\bin\RelWithDebInfo\FreeCAD.exe
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 到这一步一般就可以运行了。以下是常见问题:
|
|
|
|
|
|
|
|
|
|
|
|
## 12. 推荐运行方式
|
|
|
|
## 12. 推荐运行方式
|
|
|
|
|
|
|
|
|
|
|
|
推荐做法不是双击某个 `bat`,而是:
|
|
|
|
推荐做法不是双击某个 `bat`,而是:
|
|
|
|
|