提问人:Tippsie 提问时间:5/24/2022 最后编辑:francescalusTippsie 更新时间:5/24/2022 访问量:154
如何在 Mac 上完全遵守和安装 mathGL?
How to completely complie and install mathGL on Mac?
问:
请让我知道,如果无论如何我都可以让 MathGL 在我的计算机上工作。如果以下测试有任何错误,请告诉我。
谢谢。
好的,我已经为这个问题苦苦挣扎了很长时间。以下是当我尝试从 C/Fortran 代码可视化结果时发生的情况
基本信息为:
OS: Mac OSX 12.3.1
GCC/GFortran version: 11.3.0
clang version: 13.1.6
案例一:默认制作
cmake .
cmake .
make install
这看起来像是最小的安装。头文件安装到 /usr/local/include,库安装到 /usr/local/lib。 如果我运行
**[compile default]**
g++ src/testMathGL.cpp -o testMathGL -lmgl
**[testMathGL.cpp]**
#include "mgl2/mgl.h"
int main() {
mglGraph gr;
gr.Title("MathGL Demo");
gr.SetOrigin(0, 0);
gr.SetRanges(0, 10, -2.5, 2.5);
gr.FPlot("sin(1.7*2*pi*x) + sin(1.9*2*pi*x)", "r-2");
gr.Axis();
gr.Grid();
gr.WriteFrame("mgl_example.svg");
}
我相信默认构建足以生成绘图。但是,绘图会生成并自动保存在磁盘上。如果我正在调试我的代码,这很不方便(可能会生成很多图,我不需要这些)。其中,我需要调整一些参数以获得有前途且物理上可实现的设置。因此,我希望在每次运行后直接生成并打开绘图。
案例二:
在这种情况下,我正在尝试运行以下代码
**[testMathGL-fltk]**
#include "mgl2/fltk.h"
int graph(mglGraph *gr) {
gr->Title("MathGL Demo");
gr->SetOrigin(0, 0);
gr->SetRanges(0, 10, -2.5, 2.5);
gr->FPlot("sin(1.7*2*pi*x) + sin(1.9*2*pi*x)", "r-4");
gr->Axis();
gr->Grid();
return 0;
}
int main() {
mglFLTK gr(graph, "MathGL demo window title");
return gr.Run();
}
如果我尝试使用默认命令编译代码
**[compile default]**
g++ src/testMathGL.cpp -o testMathGL -lmgl (-lmgl-fltk)
错误很简单
'mgl2/fltk.h' file not found
当然,默认版本不包含任何图形库。为了包含这些库,我尝试了 MathGL 中的预构建库。我编译为
**[compile prebuilt]**
g++ src/testMathGL.cpp -o testMathGL -I/Users/somebody/Downloads/mathgl-8.0-mingw.win64/include/ -L/Users/somebody/Downloads/mathgl-8.0-mingw.win64/lib/-lmgl (-lmgl-fltk)
但是 g++ 一直给我这样的错误
unknown type name 'dllimport'
由于预构建的下载总是以 win64 为后缀,我认为对于类 Unix 系统,我需要自己编译它。 从 MathGL 的安装说明中,我被告知在配置 make 过程时必须启用一些键。另请参阅 http://mathgl.sourceforge.net/doc_en/Installation.html
cmake -D enable-all=on -D enable-all-widgets=on -D enable-all-swig=on .
然后它给出了很多错误,说明缺少依赖项。我想到了其中的大多数,比如 Qt5、hdf5、glut、fltk、wxWidgets、swig、octave。 现在还有一些缺失的依赖项我不知道如何解决。如图所示
CMake Error at CMakeLists.txt:515 (message):
HDF4_LIB-NOTFOUND
CMake Error at CMakeLists.txt:516 (message):
HDF4MF_LIB-NOTFOUND
CMake Error at CMakeLists.txt:517 (message):
HDF4_INCLUDE_DIR-NOTFOUND
CMake Error at CMakeLists.txt:518 (message):
Couldn't find HDF4 libraries.
CMake Error at CMakeLists.txt:608 (message):
Couldn't find libHaru or libhpdf.
CMake Error at CMakeLists.txt:612 (message):
Couldn't find headers of 3d-enabled version of libhpdf.
-- Couldn't find Qt5 WebKitWidgets library. JSON sample disabled.
c-- /usr/local/bin/octave-config x86_64-apple-darwin21.3.0 api-v57
-- Configuring incomplete, errors occurred!
See also "/Users/somebody/Downloads/mathgl-8.0.1/CMakeFiles/CMakeOutput.log".
See also "/Users/somebody/Downloads/mathgl-8.0.1/CMakeFiles/CMakeError.log".
我想知道如何安装 hdf4?还是 HDF4 已经被 HDF5 取代?
答:
嗯,我现在有一个棘手的解决方案来满足我上面的要求。这是调用系统应用程序来显示当前绘图。
#include "mgl2/mgl.h"
#include <iostream>
int main() {
mglGraph gr;
gr.Title("MathGL Demo");
gr.SetOrigin(0, 0);
gr.SetRanges(0, 10, -2.5, 2.5);
gr.FPlot("sin(1.7*2*pi*x)", "r-2");
gr.Axis();
gr.Grid();
gr.WriteFrame("mgl_example.svg");
std::system("open mgl_example.svg -a Gapplin");
}
仍在寻找编译 MathGL 的解决方案...
评论
/usr/local/include
/usr/local/include/mgl2/mgl.h
-I/usr/local/include