先上官网教程
本文是在window10平台下编译安装SOFA,仅供参考学习,具体安装请根据自己版本等进行相应调整,报错解决方法也不绝对正确,目前只是成功运行了runSofa.exe,见下图
一、依赖准备
所需依赖及版本列表(版本以博主此次安装版本为例 其他版本类似但不同望周知):
依赖项 | 版本 | 用途 |
---|---|---|
visual studio | visual studio 2019企业版 | VS编译 |
sofa | 稳定版 v19.12 | sofa源码 |
sofa-win-dependencides | 官网链接直接下 | 添加到sofa源码 |
git | git2.26.2_64 | 获取sofa源码、vcpkg源码 |
cmake | cmake 3.17 | cmake 编译 |
boost | boost_1_72_msvc_14.2_64 | 依赖项 |
vcpkg | git最新版 | 第二种方法安装bosst(博主用) |
QT | Qt5.14.2 | 依赖项 界面显示用 |
python | python2.7.18 | cmake编译阶段要求(3不行) |
1.1Visual Studio2019 Enterprise
- a、密钥:
BF8Y8-GN2QH-T84XB-QVY3B-RC4DF
-
b、安装组件需求:
-
c、
英文
界面组件安装(可减少部分编码警告)
可在VS安装后补充安装,再次运行Visual Studio Installer
1.2 sofa
在合适安装目录打开powershell运行
git clone -b v19.12 https://github.com/sofa-framework/sofa.git sofa/src
注意上述命令已经包含创建目录 sofa/src
1.3 sofa-win-deoendencides
下载去官网链接就行
下载完毕解压到 sofa/src里
1.4 Git 、Cmake、 Qt、 python
- git就自己找教程下载安装就行
- Cmake 建议用最新版,我在该套版本下 Cmake3.14一直出现找不到boost库的waring,换到3.17后这个waring就没了
- python 随便找教程直接装 环境不配都行(cmake手动找也行)
- Qt:
Qt Charts
和Qt webEngine
两个组件打勾
1.5 Boost
1.5.1 直接安装
下载对应版本,注意 1.7以上版本才有VS2019 编译所需的 msvc14.2版
- 运行下载好的.exe 文件
- 在解压(姑且叫解压)后的目录运行powershell
- 运行.\bootstrap.bat —— 结束后出现
b2.exe
- 更改配置文件
project-config.jam
如下
using msvc : 14.2 : “F:\VS2019_enterprise\Enterprise\VC\Tools\MSVC\14.25.28610\bin\Hostx64\x64\cl.exe”
注意那俩个冒号的空格 不能直接贴上
- powershell运行——运行时间在两小时左右 ☺
b2.exe stage --toolset=msvc-14.2 address-model=64 threading=multi --build-type=complete
1.5.2 Vcpkg安装
- 安装Vcpkg
– 下载:git clone https://github.com/microsoft/vcpkg
– 编译:Vcpkg工程目录poweshell运行bootstrap-vcpkg.bat
- 安装Boost
–运行.\vcpkg.exe install Boost:x64-windows
–两小时起步后完成安装在该目录F:\Vcpkg\vcpkg\installed\x64-windows
Vcpkg安装过程中会遇到下载失败的问题(长时间downloading或无法解析)
解决办法:利用vcpkg下载先找缓存的机制
- 看powershell窗口 找到此时正在下载东西的下载地址
- 手动去该地址下载该项目
- 去
F:\Vcpkg\vcpkg\downloads\tmp
下复制此时下载文件的正确命名- 正确命名手动下载的项目放置在
F:\Vcpkg\vcpkg\downloads
- 重新运行
.\vcpkg.exe install Boost:x64-windows
二、Cmake阶段
准备完毕,进入Cmake配置阶段
- source 和 build 目录选择
- configure 解决报错 直至 configure done
- genreate 至 generate done
- Open project 进入 VS编译阶段
configure报错及解决:
- 报错之
Boost
–(Vcpkg版)Add Entry BOOST_ROOT 注意一定是到include目录一级–(直接安装版)找到Boost_DRE 手动选择 boost的目录 - 报错之
python
– 找到python_dir 手动选择python2.7 安装目录下 的 python. exe文件 - 报错之
QT
Add_Entry
- 报错之
pthread
– 安装pthread
完事
三、VS编译
Cmake结束后 打开sofa.sln进入VS阶段
选择relsease build 两个半小时左右
–build前
关掉其他一切不必要进程,博主电脑:
CPU及内存占用是报表的,期间可能连鼠标都移动不了,甚至会出现堆溢出的报错,这杨就只能从新编译了
-
没有error起码是可以完成的,bin下出现这个Release文件夹,runSofa.exe就是那条期待的蛇🐍了。
-
即使没有error也会有一两千个warring,我看了大概都是类型强制转换和编码的问题,好像没啥好办法解决。
-
报错:无法创建Realse文件夹,因为已经有同名的文件或文件夹
– 去bin下直接把名为Realse的那个文件删了。。。(不知道以后会遇到什么问题),反正不删是没办法编译的,改大小写都不行
四、运行
走到这一步,Relase下终于出现了runSofa.exe 这个东西
双击运行出现那条🐍, 恭喜。
实际,无情:
- 一堆找不到dll报错:
解决 :
– 找到这些dll在哪,添加该目录去环境变量或把这些dll送到exe目录下
我添加了这两个环境变量
F:\SOFA_v19.12\source\lib\win64
F:\SOFA_v19.12\build\bin
- qt报错
last Used GUI.ini not found: SOFA qt.qpa.plugin: could not find the qt platform pugin windows in "
解决:
– 在exe执行文件的目录下,创建目录platforms,把qwindows.dll放入;
– 把libEGL.dll放入到exe所在的目录。
libEGL.dll 在 F:\Qt5.14.2\5.14.2\msvc2017_64\bin
qwindows.dll 在F:\Qt5.14.2\5.14.2\msvc2017_64\plugins\platforms
runSofa.exe🐍