整体流程可参考Build on Windows — NGS-Py 6.2.2101 documentation (ngsolve.org)
本人是基于NGS6.2.2101、Python 3.9.1、VS2019,Cmake3.19.2完成编译。
需要注意的是:
1.cmake "../src" -DCMAKE_INSTALL_PREFIX="BASEDIR/install" -G "Visual Studio 15 Win64"可能会报错,可换成:cmake "../src" -DCMAKE_INSTALL_PREFIX="BASEDIR/install" -G "Visual Studio 16 2019" -A x64,我安装的是VS2019,所以用了Visual Studio 16 2019。
2.全过程中可能会报错的地方还有:
-- Could NOT find LAPACK (missing: LAPACK_DIR)
Traceback (most recent call last):
File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'pybind11_stubgen'
CMake Warning at python/CMakeLists.txt:15 (message):
pybind11-stubgen not found, if you want to create stub files
for better autocompletion support install it with pip.
-- Could NOT find Sphinx (missing: SPHINX_EXECUTABLE)
Sphinx not found, if you want to build the documentation you have to install Sphinx
pybind11_stubgen和Sphinx比较好处理,可以直接在cmd下使用pip安装。
针对LAPACK_DIR,其实已经被下载下来了,只是没声明这个变量,可以通过修改src下的CMakeLists.txt文件解决。
3.如果还报错,如下:
建议打开build\netgen\SUPERBUILD.sln,在VS2019中编译Install,观察报错提示,一般还是确实Python包导致的,使用pip安装即可。
生成的完整文件会在build\BASEDIR\install\bin目录下,双击即可使用。
编译后的文件请参照我的资源:netgen/ngsolve编译后的文件-C++文档类资源-CSDN下载
因该文件需要系统有相关库文件支撑,若直接下载运行可能会出错。
补充的其他报错及解决方案:
1.Install的时候报错:
2>CMake Error at project_win_tcltk-stamp/project_win_tcltk-download-Debug.cmake:49 (message):
2> Command failed: 1
2>
2> 'E:/Program Files/CMake/bin/cmake.exe' '-Dmake=' '-Dconfig=Debug' '-P' 'E:/SVN/ZSX/6_FEATool/BASEDIR_ngsolve-6.2.2101_Debug/build/netgen/dependencies/src/project_win_tcltk-stamp/project_win_tcltk-download-Debug-impl.cmake'
2>
2> See also
2>
2> E:/SVN/ZSX/6_FEATool/BASEDIR_ngsolve-6.2.2101_Debug/build/netgen/dependencies/src/project_win_tcltk-stamp/project_win_tcltk-download-*.log
2>
2>
2>E:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(234,5): error MSB6006: “cmd.exe”已退出,代码为 1。
打开日志文件会发现类似如下内容:
CMake Error at project_win_zlib-stamp/download-project_win_zlib.cmake:170 (message):
Each download failed!
error: downloading 'https://github.com/NGSolve/ngsolve_dependencies/releases/download/v1.0.0/zlib_win64.zip' failed
status_code: 28
status_string: "Timeout was reached"
log:
--- LOG BEGIN ---
timeout on name lookup is not supported
Trying 13.229.188.59:443...
connect to 13.229.188.59 port 443 failed: Timed out
Failed to connect to github.com port 443: Timed out
Closing connection 0
--- LOG END --
CMake Error at project_win_zlib-stamp/project_win_zlib-download-Release-impl.cmake:9 (message):
Command failed (1):
'E:/Program Files/CMake/bin/cmake.exe' '-P' 'E:/SVN/ZSX/6_FEATool/BASEDIR_ngsolve-6.2.2101/build/netgen/dependencies/src/project_win_zlib-stamp/download-project_win_zlib.cmake'
写的已经很清楚了,下载时报错,要么是你的电脑无法访问https://github.com/,要么是不支持SSL,如果不想查找原因,我的资源中有这个zip文件,可以自行下载,已设置0积分下载。
将https://github.com/NGSolve/ngsolve_dependencies/releases/download/v1.0.0/zlib_win64.zip路径换成我的资源的下载路径再次编译即可。因CSDN的加密下载链接有时效限制,最好改完后立刻编译,否则可能还是出现下载的错误。如果有其他好的站点可以在留言中告知我,谢谢!