coin-or / SHOT

A solver for mixed-integer nonlinear optimization problems
https://shotsolver.dev
Eclipse Public License 2.0
119 stars 25 forks source link

Compiling SHOT with GAMS 33.2 #102

Closed andreaslundell closed 3 years ago

andreaslundell commented 3 years ago

When compiling SHOT with the newest GAMS version (33.2) I get the following errors:

libSHOTSolver.so: undefined reference to `GC_mutex_unlock'
libSHOTSolver.so: undefined reference to `GC_mutex_lock'
libSHOTSolver.so: undefined reference to `GC_mutex_delete'
libSHOTSolver.so: undefined reference to `GC_mutex_init'
collect2: error: ld returned 1 exit status

In the release notes I found that: _The new files gcmt.c and gcmt.h are now required when compiling/linking C expert level API files (e.g. gdxcc.c/h) to protect critical sections in the interface for multi-threaded applications. On some platforms, this might also require linking against additional libraries, e.g. libpthread on Linux. Adding the define GC_NOMUTEX when compiling the C expert level API files provides the old behavior.

When updating CMakeLists.txt to include:

set(PRIMAL_SOURCES ${PRIMAL_SOURCES} "${GAMS_DIR}/apifiles/C/api/gcmt.c")
set(PRIMAL_HEADERS ${PRIMAL_HEADERS} "${GAMS_DIR}/apifiles/C/api/gcmt.h")

I get it working again. However, this does of course not work when compiling with an older version of GAMS since these files are not present. So I see that I have the following options

  1. Require a GAMS version >=33.
  2. Make the includes optional by adding an parameter to CMake that specifies the GAMS version.
  3. Somehow automatically figure out the GAMS version in CMake and use this information to optionally include the files.

I would prefer not to do 1 since I would guess there are a lot of people using older GAMS versions. I would also prefer not to do 2 since this introduces yet another CMake parameter.

So do you @svigerske have an idea of how to easiest get the GAMS version in CMake?

svigerske commented 3 years ago

That wasn't nice of GAMS to just change the API this way.

But I think adding a -DGC_NO_MUTEX would be ok for a while. That will make things work with both old and new versions. It will only forbid the use of some exotic value for the solvelink option in GAMS, that is, doing several SHOT solves within one model in parallel using multiple threads.

Alternatively to checking the GAMS version, would it be easy to check if the file gcmt.c is present?

svigerske commented 3 years ago

But to answer also the question for the GAMS version. There is a file gamsstmp.txt in the GAMS system dir that has the GAMS version in it, e.g.,

leg 32.1.0 (Released Jul): Fri 31 Jul 07:57:12 PM EST 2020
andreaslundell commented 3 years ago

The easiest way would probably just be to check that the files do exists. I will try that, and if it doesn't work I will add -DGC_NO_MUTEX.

Thanks!

andreaslundell commented 3 years ago

So, I added the check for the files in PR https://github.com/coin-or/SHOT/pull/104.

However, there is now a new issue with GAMS 33 (GAMS 31 works fine at least).

When linking, the following errors occur:

libSHOTModelingInterfaces.a(ModelingSystemGAMS.cpp.o): In function `SHOT::ModelingSystemGAMS::createAuditLicensing()':
ModelingSystemGAMS.cpp:(.text+0x22d): undefined reference to `palCreateD'
ModelingSystemGAMS.cpp:(.text+0x23c): undefined reference to `palLicenseRegisterGAMS'
ModelingSystemGAMS.cpp:(.text+0x243): undefined reference to `gevGetStrOpt'
ModelingSystemGAMS.cpp:(.text+0x325): undefined reference to `palLicenseRegisterGAMSDone'
ModelingSystemGAMS.cpp:(.text+0x332): undefined reference to `palLicenseCheck'
ModelingSystemGAMS.cpp:(.text+0x340): undefined reference to `gmoNDisc'
ModelingSystemGAMS.cpp:(.text+0x350): undefined reference to `gmoNLNZ'
ModelingSystemGAMS.cpp:(.text+0x360): undefined reference to `gmoNZ'
ModelingSystemGAMS.cpp:(.text+0x370): undefined reference to `gmoN'
ModelingSystemGAMS.cpp:(.text+0x380): undefined reference to `gmoM'
libSHOTModelingInterfaces.a(ModelingSystemGAMS.cpp.o): In function `SHOT::ModelingSystemGAMS::setModelingObject(gmoRec*)':
ModelingSystemGAMS.cpp:(.text+0x3e3): undefined reference to `gmoEnvironment'
libSHOTModelingInterfaces.a(ModelingSystemGAMS.cpp.o): In function `SHOT::ModelingSystemGAMS::copyObjectiveFunction(std::shared_ptr<SHOT::Problem>)':
ModelingSystemGAMS.cpp:(.text+0x5cd): undefined reference to `gmoModelType'
ModelingSystemGAMS.cpp:(.text+0x5e3): undefined reference to `gmoGetObjOrder'
ModelingSystemGAMS.cpp:(.text+0x695): undefined reference to `gmoSense'
ModelingSystemGAMS.cpp:(.text+0x6b7): undefined reference to `gmoObjConst'
ModelingSystemGAMS.cpp:(.text+0x6c0): undefined reference to `gmoN'
ModelingSystemGAMS.cpp:(.text+0x6db): undefined reference to `gmoObjNZ'
ModelingSystemGAMS.cpp:(.text+0x787): undefined reference to `gmoGetObjSparse'
libSHOTModelingInterfaces.a(ModelingSystemGAMS.cpp.o): In function `SHOT::ModelingSystemGAMS::copyQuadraticTerms(std::shared_ptr<SHOT::Problem>)':
ModelingSystemGAMS.cpp:(.text+0x11fc): undefined reference to `gmoGetObjOrder'
ModelingSystemGAMS.cpp:(.text+0x121a): undefined reference to `gmoM'
ModelingSystemGAMS.cpp:(.text+0x124e): undefined reference to `gmoGetEquOrderOne'
ModelingSystemGAMS.cpp:(.text+0x1261): undefined reference to `gmoGetRowQNZOne'
ModelingSystemGAMS.cpp:(.text+0x12c9): undefined reference to `gmoGetRowQ'
ModelingSystemGAMS.cpp:(.text+0x1a98): undefined reference to `gmoObjQNZ'
ModelingSystemGAMS.cpp:(.text+0x1afd): undefined reference to `gmoGetObjQ'
libSHOTModelingInterfaces.a(ModelingSystemGAMS.cpp.o): In function `SHOT::ModelingSystemGAMS::copyLinearTerms(std::shared_ptr<SHOT::Problem>)':
ModelingSystemGAMS.cpp:(.text+0x1ec1): undefined reference to `gmoNZ'
ModelingSystemGAMS.cpp:(.text+0x1ed0): undefined reference to `gmoN'
ModelingSystemGAMS.cpp:(.text+0x1f72): undefined reference to `gmoM'
ModelingSystemGAMS.cpp:(.text+0x1fc6): undefined reference to `gmoGetRowSparse'
libSHOTModelingInterfaces.a(ModelingSystemGAMS.cpp.o): In function `SHOT::ModelingSystemGAMS::createModelFromGAMSModel(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
ModelingSystemGAMS.cpp:(.text+0x2511): undefined reference to `gmoCreateDD'
ModelingSystemGAMS.cpp:(.text+0x2534): undefined reference to `gevCreateDD'
ModelingSystemGAMS.cpp:(.text+0x253f): undefined reference to `gevInitEnvironmentLegacy'
ModelingSystemGAMS.cpp:(.text+0x255b): undefined reference to `gmoRegisterEnvironment'
ModelingSystemGAMS.cpp:(.text+0x2577): undefined reference to `gmoLoadDataLegacy'
ModelingSystemGAMS.cpp:(.text+0x25d2): undefined reference to `gmoFree'
ModelingSystemGAMS.cpp:(.text+0x25da): undefined reference to `gevFree'
ModelingSystemGAMS.cpp:(.text+0x2606): undefined reference to `gmoFree'
ModelingSystemGAMS.cpp:(.text+0x260e): undefined reference to `gevFree'
ModelingSystemGAMS.cpp:(.text+0x267e): undefined reference to `gmoFree'
ModelingSystemGAMS.cpp:(.text+0x2686): undefined reference to `gevFree'
libSHOTModelingInterfaces.a(ModelingSystemGAMS.cpp.o): In function `SHOT::ModelingSystemGAMS::copyConstraints(std::shared_ptr<SHOT::Problem>)':
ModelingSystemGAMS.cpp:(.text+0x2734): undefined reference to `gmoM'
ModelingSystemGAMS.cpp:(.text+0x2751): undefined reference to `gmoGetEquTypeOne'
ModelingSystemGAMS.cpp:(.text+0x279a): undefined reference to `gmoDict'
ModelingSystemGAMS.cpp:(.text+0x27b6): undefined reference to `gmoGetEquNameOne'
ModelingSystemGAMS.cpp:(.text+0x27ca): undefined reference to `gmoGetEquOrderOne'
ModelingSystemGAMS.cpp:(.text+0x28b3): undefined reference to `gmoGetRhsOne'
ModelingSystemGAMS.cpp:(.text+0x3253): undefined reference to `gmoGetRhsOne'
ModelingSystemGAMS.cpp:(.text+0x3283): undefined reference to `gmoGetRhsOne'
libSHOTModelingInterfaces.a(ModelingSystemGAMS.cpp.o): In function `SHOT::ModelingSystemGAMS::copyVariables(std::shared_ptr<SHOT::Problem>)':
ModelingSystemGAMS.cpp:(.text+0x345c): undefined reference to `gmoN'
ModelingSystemGAMS.cpp:(.text+0x3637): undefined reference to `gmoGetVarLower'
ModelingSystemGAMS.cpp:(.text+0x3640): undefined reference to `gmoGetVarUpper'
ModelingSystemGAMS.cpp:(.text+0x3663): undefined reference to `gmoDict'
ModelingSystemGAMS.cpp:(.text+0x367f): undefined reference to `gmoGetVarNameOne'
ModelingSystemGAMS.cpp:(.text+0x36a0): undefined reference to `gmoGetVarTypeOne'
libSHOTModelingInterfaces.a(ModelingSystemGAMS.cpp.o): In function `SHOT::ModelingSystemGAMS::clearGAMSObjects()':
ModelingSystemGAMS.cpp:(.text+0x3cb1): undefined reference to `gmoFree'
ModelingSystemGAMS.cpp:(.text+0x3cc2): undefined reference to `gevFree'
ModelingSystemGAMS.cpp:(.text+0x3cda): undefined reference to `palFree'
libSHOTModelingInterfaces.a(ModelingSystemGAMS.cpp.o): In function `SHOT::ModelingSystemGAMS::~ModelingSystemGAMS()':
ModelingSystemGAMS.cpp:(.text+0x3e19): undefined reference to `gmoLibraryUnload'
ModelingSystemGAMS.cpp:(.text+0x3e1e): undefined reference to `gevLibraryUnload'
ModelingSystemGAMS.cpp:(.text+0x3e23): undefined reference to `palLibraryUnload'
libSHOTModelingInterfaces.a(ModelingSystemGAMS.cpp.o): In function `SHOT::ModelingSystemGAMS::createModelFromProblemFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
ModelingSystemGAMS.cpp:(.text+0x4a2f): undefined reference to `gmoOptFileSet'
ModelingSystemGAMS.cpp:(.text+0x4a3e): undefined reference to `gevTerminateUninstall'
libSHOTModelingInterfaces.a(ModelingSystemGAMS.cpp.o): In function `SHOT::ModelingSystemGAMS::finalizeSolution()':
ModelingSystemGAMS.cpp:(.text+0x5103): undefined reference to `gmoSetSolutionPrimal'
ModelingSystemGAMS.cpp:(.text+0x5133): undefined reference to `gmoModelStatSet'
ModelingSystemGAMS.cpp:(.text+0x5193): undefined reference to `gmoSolveStatSet'
ModelingSystemGAMS.cpp:(.text+0x51a5): undefined reference to `gmoCompleteSolution'
ModelingSystemGAMS.cpp:(.text+0x51ae): undefined reference to `gmoSetHeadnTail'
ModelingSystemGAMS.cpp:(.text+0x543e): undefined reference to `gmoUnloadSolutionLegacy'
ModelingSystemGAMS.cpp:(.text+0x54f7): undefined reference to `gmoCheckSolPoolUEL'
ModelingSystemGAMS.cpp:(.text+0x5543): undefined reference to `gmoPrepareSolPoolMerge'
ModelingSystemGAMS.cpp:(.text+0x5573): undefined reference to `gmoPrepareSolPoolNextSym'
ModelingSystemGAMS.cpp:(.text+0x55e0): undefined reference to `gmoSetVarL'
ModelingSystemGAMS.cpp:(.text+0x55e9): undefined reference to `gmoUnloadSolPoolSolution'
ModelingSystemGAMS.cpp:(.text+0x57ce): undefined reference to `gmoFinalizeSolPoolMerge'
ModelingSystemGAMS.cpp:(.text+0x5833): undefined reference to `gmoModelStatSet'
ModelingSystemGAMS.cpp:(.text+0x595c): undefined reference to `gmoSolveStatSet'
ModelingSystemGAMS.cpp:(.text+0x596f): undefined reference to `gmoSolveStatSet'
ModelingSystemGAMS.cpp:(.text+0x5982): undefined reference to `gmoSolveStatSet'
ModelingSystemGAMS.cpp:(.text+0x5995): undefined reference to `gmoSolveStatSet'
ModelingSystemGAMS.cpp:(.text+0x59a8): undefined reference to `gmoSolveStatSet'
ModelingSystemGAMS.cpp:(.text+0x59bb): undefined reference to `gmoModelStatSet'
ModelingSystemGAMS.cpp:(.text+0x59ce): undefined reference to `gmoModelStatSet'
ModelingSystemGAMS.cpp:(.text+0x59e1): undefined reference to `gmoModelStatSet'
ModelingSystemGAMS.cpp:(.text+0x59f4): undefined reference to `gmoModelStatSet'
ModelingSystemGAMS.cpp:(.text+0x5a07): undefined reference to `gmoModelStatSet'
libSHOTModelingInterfaces.a(ModelingSystemGAMS.cpp.o):ModelingSystemGAMS.cpp:(.text+0x5a1a): more undefined references to `gmoModelStatSet' follow
libSHOTModelingInterfaces.a(ModelingSystemGAMS.cpp.o): In function `SHOT::ModelingSystemGAMS::updateSettings(std::shared_ptr<SHOT::Settings>)':
ModelingSystemGAMS.cpp:(.text+0x5de6): undefined reference to `gevGetDblOpt'
ModelingSystemGAMS.cpp:(.text+0x5f03): undefined reference to `gevGetIntOpt'
ModelingSystemGAMS.cpp:(.text+0x5f2a): undefined reference to `gevGetIntOpt'
ModelingSystemGAMS.cpp:(.text+0x6054): undefined reference to `gevGetDblOpt'
ModelingSystemGAMS.cpp:(.text+0x6188): undefined reference to `gevGetDblOpt'
ModelingSystemGAMS.cpp:(.text+0x62b8): undefined reference to `gevGetIntOpt'
ModelingSystemGAMS.cpp:(.text+0x62d5): undefined reference to `gevGetIntOpt'
ModelingSystemGAMS.cpp:(.text+0x62f5): undefined reference to `gevGetIntOpt'
ModelingSystemGAMS.cpp:(.text+0x6388): undefined reference to `gevThreads'
ModelingSystemGAMS.cpp:(.text+0x64fd): undefined reference to `gmoOptFile'
ModelingSystemGAMS.cpp:(.text+0x6517): undefined reference to `gmoNameOptFile'
ModelingSystemGAMS.cpp:(.text+0x68db): undefined reference to `gevGetDblOpt'
libSHOTModelingInterfaces.a(ModelingSystemGAMS.cpp.o): In function `SHOT::ModelingSystemGAMS::parseGamsInstructions(int, int*, int*, int, double*, std::shared_ptr<SHOT::Problem> const&)':
ModelingSystemGAMS.cpp:(.text+0x6b9c): undefined reference to `gevGetIntOpt'
ModelingSystemGAMS.cpp:(.text+0x6fef): undefined reference to `gmoGetjSolver'
ModelingSystemGAMS.cpp:(.text+0x73df): undefined reference to `gmoGetjSolver'
ModelingSystemGAMS.cpp:(.text+0x7807): undefined reference to `gmoGetjSolver'
ModelingSystemGAMS.cpp:(.text+0x7ca7): undefined reference to `gmoGetjSolver'
ModelingSystemGAMS.cpp:(.text+0x812f): undefined reference to `gmoGetjSolver'
libSHOTModelingInterfaces.a(ModelingSystemGAMS.cpp.o):ModelingSystemGAMS.cpp:(.text+0x845f): more undefined references to `gmoGetjSolver' follow
libSHOTModelingInterfaces.a(ModelingSystemGAMS.cpp.o): In function `SHOT::ModelingSystemGAMS::parseGamsInstructions(int, int*, int*, int, double*, std::shared_ptr<SHOT::Problem> const&)':
ModelingSystemGAMS.cpp:(.text+0x858b): undefined reference to `gevLogStatPChar'
ModelingSystemGAMS.cpp:(.text+0x9535): undefined reference to `gevLogStatPChar'
libSHOTModelingInterfaces.a(ModelingSystemGAMS.cpp.o): In function `SHOT::ModelingSystemGAMS::copyNonlinearExpressions(std::shared_ptr<SHOT::Problem>)':
ModelingSystemGAMS.cpp:(.text+0x98d5): undefined reference to `gmoNLCodeSizeMaxRow'
ModelingSystemGAMS.cpp:(.text+0x992f): undefined reference to `gmoNLConst'
ModelingSystemGAMS.cpp:(.text+0x9946): undefined reference to `gmoPPool'
ModelingSystemGAMS.cpp:(.text+0x995a): undefined reference to `gmoObjNLNZ'
ModelingSystemGAMS.cpp:(.text+0x9967): undefined reference to `gmoGetObjOrder'
ModelingSystemGAMS.cpp:(.text+0x9983): undefined reference to `gmoM'
ModelingSystemGAMS.cpp:(.text+0x99ca): undefined reference to `gmoGetEquOrderOne'
ModelingSystemGAMS.cpp:(.text+0x99f2): undefined reference to `gmoDirtyGetRowFNLInstr'
ModelingSystemGAMS.cpp:(.text+0x9ba8): undefined reference to `gmoDirtyGetObjFNLInstr'
ModelingSystemGAMS.cpp:(.text+0x9be9): undefined reference to `gmoObjJacVal'
libSHOTModelingInterfaces.a(ModelingSystemGAMS.cpp.o): In function `SHOT::ModelingSystemGAMS::createProblem(std::shared_ptr<SHOT::Problem>&)':
ModelingSystemGAMS.cpp:(.text+0x9ea0): undefined reference to `gmoObjReformSet'
ModelingSystemGAMS.cpp:(.text+0x9ead): undefined reference to `gmoObjStyleSet'
ModelingSystemGAMS.cpp:(.text+0x9ebf): undefined reference to `gmoMinfSet'
ModelingSystemGAMS.cpp:(.text+0x9ed4): undefined reference to `gmoPinfSet'
ModelingSystemGAMS.cpp:(.text+0x9ee9): undefined reference to `gmoIndexBaseSet'
ModelingSystemGAMS.cpp:(.text+0x9ef8): undefined reference to `gmoUseQSet'
ModelingSystemGAMS.cpp:(.text+0x9f0a): undefined reference to `gmoNameInput'
libSHOTModelingInterfaces.a(EntryPointsGAMS.cpp.o): In function `std::_Function_handler<void (), shtCallSolver::{lambda()#1}>::_M_invoke(std::_Any_data const&)':
EntryPointsGAMS.cpp:(.text+0xe3): undefined reference to `gevTerminateGet'
libSHOTModelingInterfaces.a(EntryPointsGAMS.cpp.o): In function `shtInitialize':
EntryPointsGAMS.cpp:(.text+0x1da): undefined reference to `gmoInitMutexes'
EntryPointsGAMS.cpp:(.text+0x1df): undefined reference to `gevInitMutexes'
libSHOTModelingInterfaces.a(EntryPointsGAMS.cpp.o): In function `shtFinalize':
EntryPointsGAMS.cpp:(.text+0x1fa): undefined reference to `gmoFiniMutexes'
EntryPointsGAMS.cpp:(.text+0x1ff): undefined reference to `gevFiniMutexes'
libSHOTModelingInterfaces.a(EntryPointsGAMS.cpp.o): In function `shtcreate':
EntryPointsGAMS.cpp:(.text+0x229): undefined reference to `gmoGetReady'
EntryPointsGAMS.cpp:(.text+0x246): undefined reference to `gevGetReady'
EntryPointsGAMS.cpp:(.text+0x254): undefined reference to `palGetReady'
libSHOTModelingInterfaces.a(EntryPointsGAMS.cpp.o): In function `shtfree':
EntryPointsGAMS.cpp:(.text+0x2b4): undefined reference to `gmoLibraryUnload'
EntryPointsGAMS.cpp:(.text+0x2b9): undefined reference to `gevLibraryUnload'
libSHOTModelingInterfaces.a(EntryPointsGAMS.cpp.o): In function `shtCallSolver':
EntryPointsGAMS.cpp:(.text+0x3d4): undefined reference to `gmoEnvironment'
EntryPointsGAMS.cpp:(.text+0x757): undefined reference to `palSetSystemName'
EntryPointsGAMS.cpp:(.text+0x76b): undefined reference to `palGetAuditLine'
EntryPointsGAMS.cpp:(.text+0x81d): undefined reference to `gevStatAudit'
EntryPointsGAMS.cpp:(.text+0xb7f): undefined reference to `gmoSolveStatSet'
EntryPointsGAMS.cpp:(.text+0xb90): undefined reference to `gmoModelStatSet'
EntryPointsGAMS.cpp:(.text+0xcc8): undefined reference to `gmoSolveStatSet'
EntryPointsGAMS.cpp:(.text+0xcd9): undefined reference to `gmoModelStatSet'
EntryPointsGAMS.cpp:(.text+0xf2e): undefined reference to `gmoEnvironment'
EntryPointsGAMS.cpp:(.text+0x13dc): undefined reference to `gmoSolveStatSet'
libSHOTModelingInterfaces.a(EntryPointsGAMS.cpp.o): In function `shtInitialize':
EntryPointsGAMS.cpp:(.text+0x1e8): undefined reference to `palInitMutexes'
libSHOTModelingInterfaces.a(EntryPointsGAMS.cpp.o): In function `shtFinalize':
EntryPointsGAMS.cpp:(.text+0x208): undefined reference to `palFiniMutexes'
libSHOTModelingInterfaces.a(EntryPointsGAMS.cpp.o): In function `shtfree':
EntryPointsGAMS.cpp:(.text+0x2bf): undefined reference to `palLibraryUnload'
libSHOTModelingInterfaces.a(EntryPointsGAMS.cpp.o): In function `SHOT::GamsOutputSink::flush_()':
EntryPointsGAMS.cpp:(.text._ZN4SHOT14GamsOutputSink6flush_Ev[_ZN4SHOT14GamsOutputSink6flush_Ev]+0x3): undefined reference to `gevLogStatFlush'
libSHOTModelingInterfaces.a(EntryPointsGAMS.cpp.o): In function `shtCallSolver.cold.702':
EntryPointsGAMS.cpp:(.text.unlikely+0x13e): undefined reference to `gmoSolveStatSet'
EntryPointsGAMS.cpp:(.text.unlikely+0x154): undefined reference to `gmoModelStatSet'
libSHOTModelingInterfaces.a(EntryPointsGAMS.cpp.o): In function `spdlog::sinks::base_sink<std::mutex>::flush()':
EntryPointsGAMS.cpp:(.text._ZN6spdlog5sinks9base_sinkISt5mutexE5flushEv[_ZN6spdlog5sinks9base_sinkISt5mutexE5flushEv]+0x36): undefined reference to `gevLogStatFlush'
libSHOTModelingInterfaces.a(EntryPointsGAMS.cpp.o): In function `SHOT::GamsOutputSink::sink_it_(spdlog::details::log_msg const&)':
EntryPointsGAMS.cpp:(.text._ZN4SHOT14GamsOutputSink8sink_it_ERKN6spdlog7details7log_msgE[_ZN4SHOT14GamsOutputSink8sink_it_ERKN6spdlog7details7log_msgE]+0xf8): undefined reference to `gevLogPChar'
EntryPointsGAMS.cpp:(.text._ZN4SHOT14GamsOutputSink8sink_it_ERKN6spdlog7details7log_msgE[_ZN4SHOT14GamsOutputSink8sink_it_ERKN6spdlog7details7log_msgE]+0x173): undefined reference to `gevLogStatPChar'
libSHOTSolver.so: undefined reference to `gevSwitchLogStat'
libSHOTSolver.so: undefined reference to `gmoNameOptFileSet'
libSHOTSolver.so: undefined reference to `gmoGetVarUpperOne'
libSHOTSolver.so: undefined reference to `gmoForceContSet'
libSHOTSolver.so: undefined reference to `VTT for SHOT::NLPSolverIpoptRelaxed'
libSHOTSolver.so: undefined reference to `gevCallSolver'
libSHOTSolver.so: undefined reference to `gmoAltBoundsSet'
libSHOTSolver.so: undefined reference to `gmoGetHeadnTail'
libSHOTSolver.so: undefined reference to `gmoSetAltVarLowerOne'
libSHOTSolver.so: undefined reference to `vtable for SHOT::NLPSolverIpoptRelaxed'
libSHOTSolver.so: undefined reference to `palLicenseCheckSubSys'
libSHOTSolver.so: undefined reference to `gmoGetVarLowerOne'
libSHOTSolver.so: undefined reference to `gmoSetAltVarUpperOne'
libSHOTSolver.so: undefined reference to `gevRestoreLogStat'
libSHOTSolver.so: undefined reference to `gmoGetVarL'
libSHOTSolver.so: undefined reference to `gmoSetVarLOne'
libSHOTSolver.so: undefined reference to `SHOT::NLPSolverIpoptRelaxed::NLPSolverIpoptRelaxed(std::shared_ptr<SHOT::Environment>, std::shared_ptr<SHOT::Problem>)'
libSHOTSolver.so: undefined reference to `vtable for SHOT::IpoptProblem'
libSHOTSolver.so: undefined reference to `gmoModelStat'
libSHOTSolver.so: undefined reference to `gmoSolveStat'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/SHOT.dir/build.make:100: SHOT] Error 1
make[1]: *** [CMakeFiles/Makefile2:516: CMakeFiles/SHOT.dir/all] Error 2
make: *** [Makefile:152: all] Error 2

Did something else change as well in GAMS versions newer than 31? I am unsure if I ever compiled it with version 32...

svigerske commented 3 years ago

No, that's a problem with SHOTs CMakeLists.txt, see https://github.com/coin-or/SHOT/pull/104/files#r557820976

andreaslundell commented 3 years ago

Everything should be fixed with PR https://github.com/coin-or/SHOT/pull/104.