Description
Contributor: Lutz Westermann, October 2012
Small Model of Type : C and CPP
Category : GAMS API library
Main file : CPPex1.gms
$title 'Test expert level C API to read and write GDX in C++' (CPPEX1,SEQ=5)
$onText
Contributor: Lutz Westermann, October 2012
$offText
$set srcRoot %gams.sysdir%apifiles%system.dirsep%C++%system.dirsep%
$set srcRootC %gams.sysdir%apifiles%system.dirsep%C%system.dirsep%
$set exaDir %srcRoot%xp_example1%system.dirsep%
$ifThen %system.filesys% == UNIX
$ if not set COMPILER $set COMPILER GNU
$else
$ if not set COMPILER $set COMPILER INTEL
$endIf
$ifThen %COMPILER% == GNU
$ set CPPCOMP g++
$ ifThen %system.filesys% == UNIX
$ set OUT -oxp_example1
$ set FLAGS -ldl -lpthread
$ else
$ set OUT -oxp_example1.exe
$ set FLAGS
$ endIf
$elseIf %COMPILER% == INTEL
$ set CPPCOMP cl
$ set FLAGS
$ set OUT -Fexp_example1.exe
$else
$ abort Unknown compiler: %COMPILER%
$endIf
$call rm -rf demanddata.gdx
$call.checkErrorLevel cp "%srcRootC%api%system.dirsep%gdxcc.c" .
$call.checkErrorLevel cp "%exaDir%xp_example1.cpp" .
$call %CPPCOMP% xp_example1.cpp gdxcc.c -I"%srcRoot%api" -I"%srcRootC%api" %OUT% %FLAGS%
$if errorlevel 1 $abort 'Problem compiling xp_example1.cpp'
$if %system.buildcode% == DEG $call install_name_tool -change $GCCLIBDIR/libstdc++.6.dylib "%gams.sysdir%/libstdc++.6.dylib" -change $GCCLIBDIR/libgcc_s.1.dylib "%gams.sysdir%/libgcc_s.1.dylib" xp_example1
$if %system.buildcode% == DEG $if errorlevel 1 $abort 'Problem adjusting library path'
$call .%system.dirsep%xp_example1 "%gams.sysdir%."
$if errorlevel 1 $abort 'Problem executing xp_example1 writing GDX file'
$call gdxdiff demanddata.gdx demandwant.gdx
$if errorlevel 1 $abort 'Demanddata not as expected'
$call .%system.dirsep%xp_example1 "%gams.sysdir%." trnsport.gdx
$if errorlevel 1 $abort 'Problem executing xp_example1 reading GDX file'