groops-devs / groops

A software toolkit for gravity field recovery and GNSS processing
GNU General Public License v3.0
178 stars 106 forks source link

How can I use external code in my c++ procedure in GROOPS? #69

Closed FFFFFG-IGG closed 2 years ago

FFFFFG-IGG commented 2 years ago

Description

Hello , I'd like to compile groops in visual studio(2019), for introducing external code, I made a .lib file that by compiling blasWrapper.f and lapackWrapper.f with intel HPC-fortran compiler. And linked it to my visual studio project. However, there goes a error "cannot recognize external symbol“. Note that symbols are 'wrapdgemm', 'wrapdsyev' etc. I've intalled lapack and Openblas in my computer and linked them into my vs project, It also did not work. I think there are some self-made fortran code in groops that are not complied, and I just compiled them in a wrong way. Could someone give me some advice on problems I met? Many thanks!

GROOPS version

No response

Operating systems

Log output

No response

akvas commented 2 years ago

Dear @FFFFFG-IGG,

you can set up GROOPS as a CMake project in Visual Studio. To do that, start Visual Studio and select Open a local folder, the select the GROOPS root directory (groops). Visual Studio will detect that it is a CMake project. Select source/CMakeLists.txt as the CMake file.

Go to Project > CMake settings and add a Mingw64 configuration (Debug or Release, depending on your requirements). Add the variable "CMAKE_Fortran_COMPILER" with the path to the Intel Fortran compiler to the CMake variables of this new configuration.

Finally, go to Project > Delete cache and reconfigure to generate the required Makefiles. Then GROOPS can be simply compiled as usual.

Please note that this is not strictly a GROOPS issue and rather deals with how to setup the project in your IDE. We can only offer limited support on such matters (see #34 for a discussion on that).

Cheers, Andreas