Closed andreaslundell closed 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?
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
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!
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...
No, that's a problem with SHOTs CMakeLists.txt, see https://github.com/coin-or/SHOT/pull/104/files#r557820976
Everything should be fixed with PR https://github.com/coin-or/SHOT/pull/104.
When compiling SHOT with the newest GAMS version (33.2) I get the following errors:
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:
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
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?