Build Gmsh from source using Cygwin (deprecated function(s))
Hi, I am trying to build Gmsh 4.10.5 from source using CMake under Cygwin on Windows10. To do so, I wrote the attached shell script myconf_gmsh_cygwin.sh.
The cmake configuration gives only one error (attached CMakeError.log`and CMakeOutput.log), but finally it seems to generate all the build files in a proper way, as displayed in the terminal:
-- Performing Test WALL
-- Performing Test WALL - Success
-- Performing Test WCAST
-- Performing Test WCAST - Failed
-- Performing Test WDEPREC
-- Performing Test WDEPREC - Success
-- Performing Test WIND
-- Performing Test WIND - Success
-- Performing Test WATTR
-- Performing Test WATTR - Success
-- Performing Test NOWARN
-- Performing Test NOWARN - Success
-- Performing Test NOOPT
-- Performing Test NOOPT - Success
--
-- Gmsh 4.10.5 has been configured for 64
--
-- * Build options: 64Bit ANN[contrib] Dlopen Eigen[contrib] Parser Post
-- * Build type: RelWithDebInfo
-- * C compiler: /usr/bin/gcc.exe
-- * C++ compiler: /usr/bin/g++.exe
-- * Install prefix: /cygdrive/c/gmsh-gnu-minimal
--
-- Configuring done
-- Generating done
-- Build files have been written to: /cygdrive/c/gmsh-4.10.5-source/build
The troubles begin when calling make to build the libraries (make lib
). I have a huge amount of -Wunknown-pragmas
warnings and an error due to deprecated cygwin_conv_to_win32_path
called in /src/common/StringUtils.cpp
, line 69 (inside std::string FixWindowsPath(const std::string &in)
).
[ 0%] Building CXX object CMakeFiles/lib.dir/src/common/GmshGlobal.cpp.o
In file included from /cygdrive/c/gmsh-4.10.5-source/src/common/GmshGlobal.cpp:19:
/cygdrive/c/gmsh-4.10.5-source/src/geo/GModel.h:222: warning: ignoring ‘#pragma omp atomic’ [-Wunknown-pragmas]
222 | #pragma omp atomic write
|
/cygdrive/c/gmsh-4.10.5-source/src/geo/GModel.h:227: warning: ignoring ‘#pragma omp atomic’ [-Wunknown-pragmas]
227 | #pragma omp atomic write
|
/cygdrive/c/gmsh-4.10.5-source/src/geo/GModel.h:235: warning: ignoring ‘#pragma omp atomic’ [-Wunknown-pragmas]
235 | #pragma omp atomic capture
|
/cygdrive/c/gmsh-4.10.5-source/src/geo/GModel.h:245: warning: ignoring ‘#pragma omp atomic’ [-Wunknown-pragmas]
245 | #pragma omp atomic capture
|
/cygdrive/c/gmsh-4.10.5-source/src/geo/GModel.h:256: warning: ignoring ‘#pragma omp atomic’ [-Wunknown-pragmas]
256 | #pragma omp atomic update
|
[ 0%] Building CXX object CMakeFiles/lib.dir/src/common/GmshMessage.cpp.o
In file included from /cygdrive/c/gmsh-4.10.5-source/src/common/GmshMessage.cpp:26:
/cygdrive/c/gmsh-4.10.5-source/src/geo/GModel.h:222: warning: ignoring ‘#pragma omp atomic’ [-Wunknown-pragmas]
222 | #pragma omp atomic write
|
/cygdrive/c/gmsh-4.10.5-source/src/geo/GModel.h:227: warning: ignoring ‘#pragma omp atomic’ [-Wunknown-pragmas]
227 | #pragma omp atomic write
|
/cygdrive/c/gmsh-4.10.5-source/src/geo/GModel.h:235: warning: ignoring ‘#pragma omp atomic’ [-Wunknown-pragmas]
235 | #pragma omp atomic capture
|
/cygdrive/c/gmsh-4.10.5-source/src/geo/GModel.h:245: warning: ignoring ‘#pragma omp atomic’ [-Wunknown-pragmas]
245 | #pragma omp atomic capture
|
/cygdrive/c/gmsh-4.10.5-source/src/geo/GModel.h:256: warning: ignoring ‘#pragma omp atomic’ [-Wunknown-pragmas]
256 | #pragma omp atomic update
|
/cygdrive/c/gmsh-4.10.5-source/src/common/GmshMessage.cpp:484: warning: ignoring ‘#pragma omp critical’ [-Wunknown-pragmas]
484 | #pragma omp critical(MsgError)
|
/cygdrive/c/gmsh-4.10.5-source/src/common/GmshMessage.cpp:496: warning: ignoring ‘#pragma omp critical’ [-Wunknown-pragmas]
496 | #pragma omp critical(MsgError)
|
/cygdrive/c/gmsh-4.10.5-source/src/common/GmshMessage.cpp:545: warning: ignoring ‘#pragma omp critical’ [-Wunknown-pragmas]
545 | #pragma omp critical(MsgWarning)
and more ...
And the error that stops the compilation:
[ 6%] Building CXX object CMakeFiles/lib.dir/src/common/StringUtils.cpp.o
/cygdrive/c/gmsh-4.10.5-source/src/common/StringUtils.cpp: In function ‘std::string FixWindowsPath(const string&)’:
/cygdrive/c/gmsh-4.10.5-source/src/common/StringUtils.cpp:69:3: error: ‘cygwin_conv_to_win32_path’ was not declared in this scope; did you mean ‘cygwin_conv_path’?
69 | cygwin_conv_to_win32_path(in.c_str(), tmp);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
| cygwin_conv_path
make[3]: *** [CMakeFiles/lib.dir/build.make:258: CMakeFiles/lib.dir/src/common/StringUtils.cpp.o] Error 1
make[2]: *** [CMakeFiles/Makefile2:198: CMakeFiles/lib.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:205: CMakeFiles/lib.dir/rule] Error 2
make: *** [Makefile:189: lib] Error 2
I think that cygwin_conv_to_win32_path
should be substituted with cygwin_conv_path
inside /src/common/StringUtils.cpp
. I tried as suggested in Cygwin documentation at this link cygwin_conv_path, but without success so far.
I have very little experience with C and C++ programming, as well as compiling C source code.
Any help is appreciated.