[Gate-users] Workaround for compiling Gate on OS X 10.8 Mountain Lion & 10.7 Lion

Mojca Miklavec mojca.miklavec.lists at gmail.com
Wed Sep 5 16:15:26 CEST 2012


On Wed, Sep 5, 2012 at 8:23 AM, Gaens, Michaela wrote:
> Hi Marc and Gate Users,
>
> I actually ran into the same trouble when trying to compile Gate v6.2 on Mac OS X Lion yesterday. In the end I also managed to compile and run Gate, but I went the other way and looked at the code instead of the compiler.
>
> Looking at the definition of std:ostringstream (http://www.cplusplus.com/reference/iostream/ostringstream/ostringstream/), the used constructor in GateUIcmdWithAVector.hh line 124 indeed has the wrong arguments, since it does not expect an integer. After a slight modification the error disappeared.
>
> I then encountered one more error related to GateMaps.hh:
>
> /Applications/gate_v6.2/source/digits_hits/include/GateMaps.hh:120:7: error: use of undeclared identifier 'insert'
>
> It seems that a "this->" was missing there.
>
> After changing that, the compilation completed (using llvm-gcc-4.2) and also the benchmarks worked fine.
>
> I have attached the modified files.
>
> GateUIcmdWithAVector.hh belongs into the folder gate_v6.2/source/general/include and GateMaps.hh into the folder gate_v6.2/source/digit_hits/include .
>
> Maybe someone can have a look if my modifications make sense.

Thank you very much for the patches. They worked for me (the
compilation still failed, but the two building errors were solved).
What I don't understand is why
    os << '\0';
is needed in GateUIcmdWithAVector.hh and I'm not sure how
ostringstream without any argument works on other compilers. Maybe
something like
    std::ostringstream os (std::ostringstream::out);
would be needed, but I'm not experienced enough to judge about that. I
was only looking at
http://www.cplusplus.com/reference/iostream/ostringstream/ostringstream/.

Just for a reference, the errors without the patches were the following:

{{{{{

[  7%] Building CXX object CMakeFiles/Gate.dir/Gate.cc.o
In file included from /Users/gate/gate_v6.2/Gate.cc:26:
In file included from
/Users/gate/gate_v6.2/source/physics/include/GateSourceMgr.hh:19:
In file included from
/Users/gate/gate_v6.2/source/physics/include/GateVSource.hh:26:
In file included from
/Users/gate/gate_v6.2/source/physics/include/GateVSourceMessenger.hh:32:
/Users/gate/gate_v6.2/source/general/include/GateUIcmdWithAVector.hh:124:22:
error: no matching constructor for initialization of
'std::ostringstream' (aka 'basic_ostringstream<char>')
  std::ostringstream os(st,100);
                     ^  ~~~~~~
/usr/include/c++/4.2.1/sstream:436:7: note: candidate constructor not
viable: no known conversion from 'int' to 'ios_base::openmode' (aka
'std::_Ios_Openmode') for 2nd argument;
      basic_ostringstream(const __string_type& __str,
      ^
/usr/include/c++/4.2.1/sstream:416:7: note: candidate constructor not
viable: requires at most 1 argument, but 2 were provided
      basic_ostringstream(ios_base::openmode __mode = ios_base::out)
      ^
/usr/include/c++/4.2.1/bits/sstream.tcc:265:25: note: candidate
constructor (the implicit copy constructor) not viable: requires 1
argument, but 2 were provided
  extern template class basic_ostringstream<char>;
                        ^
1 error generated.
make[2]: *** [CMakeFiles/Gate.dir/Gate.cc.o] Error 1
make[1]: *** [CMakeFiles/Gate.dir/all] Error 2
make: *** [all] Error 2



[ 23%] Building CXX object
CMakeFiles/Gate.dir/source/geometry/src/GateMDBFieldReader.cc.o
In file included from
/Users/gate/gate_v6.2/source/geometry/src/GateMDBFieldReader.cc:19:
In file included from
/Users/gate/gate_v6.2/source/geometry/include/GateMDBFieldReader.hh:19:
In file included from
/Users/gate/gate_v6.2/source/geometry/include/GateMDBFieldDecoder.hh:17:
/Users/gate/gate_v6.2/source/digits_hits/include/GateMaps.hh:120:7:
error: use of undeclared identifier 'insert'
      insert(*iter);
      ^
      this->
/Users/gate/gate_v6.2/source/geometry/src/GateMDBFieldReader.cc:207:51:
note: in instantiation of member function 'GateMap<G4String,
int>::GateMap' requested here
GateCodeMap GateMDBFieldReader::theFMFPrefixMap =
GateCodeMap(N_FMFPREFIXMAPS,theFMFPrefixMapArray);
                                                  ^
/usr/include/c++/4.2.1/bits/stl_map.h:399:7: note: must qualify
identifier to find this declaration in dependent base class
      insert(const value_type& __x)
      ^
/usr/include/c++/4.2.1/bits/stl_map.h:426:7: note: must qualify
identifier to find this declaration in dependent base class
      insert(iterator __position, const value_type& __x)
      ^
/usr/include/c++/4.2.1/bits/stl_map.h:439:9: note: must qualify
identifier to find this declaration in dependent base class
        insert(_InputIterator __first, _InputIterator __last)
        ^
1 error generated.
make[2]: *** [CMakeFiles/Gate.dir/source/geometry/src/GateMDBFieldReader.cc.o]
Error 1
make[1]: *** [CMakeFiles/Gate.dir/all] Error 2
make: *** [all] Error 2

}}}}}

There were some further warnings which might be worth patching in
patch releases for Gate though:

{{{{{
[ 29%] Building CXX object
CMakeFiles/Gate.dir/source/digits_hits/src/GateCrossSectionProductionActor.cc.o
In file included from
/Users/mojca/app/fizika/gate/gate_v6.2/source/digits_hits/src/GateCrossSectionProductionActor.cc:20:
/Users/mojca/app/fizika/gate/gate_v6.2/source/digits_hits/include/GateCrossSectionProductionActor.hh:25:22:
warning: extra tokens at end of #include directive [-Wextra-tokens]
#include "G4Event.hh";
                     ^
                     //
1 warning generated.
[ 29%] Building CXX object
CMakeFiles/Gate.dir/source/digits_hits/src/GateCrossSectionProductionActorMessenger.cc.o
In file included from
/Users/mojca/app/fizika/gate/gate_v6.2/source/digits_hits/src/GateCrossSectionProductionActorMessenger.cc:17:
/Users/mojca/app/fizika/gate/gate_v6.2/source/digits_hits/include/GateCrossSectionProductionActor.hh:25:22:
warning: extra tokens at end of #include directive [-Wextra-tokens]
#include "G4Event.hh";
                     ^
                     //
1 warning generated.


[ 41%] Building CXX object
CMakeFiles/Gate.dir/source/digits_hits/src/GatePhaseSpaceActor.cc.o
In file included from
/Users/mojca/app/fizika/gate/gate_v6.2/source/digits_hits/src/GatePhaseSpaceActor.cc:27:
In file included from
/Users/mojca/app/fizika/gate/gate_v6.2/source/general/include/GateIAEAHeader.h:5:
In file included from
/Users/mojca/app/fizika/gate/gate_v6.2/source/general/include/GateIAEARecord.h:6:
/Users/mojca/app/fizika/gate/gate_v6.2/source/general/include/GateIAEAUtilities.h:83:9:
warning: 'LITTLE_ENDIAN' macro redefined
#define LITTLE_ENDIAN   __LITTLE_ENDIAN
        ^
/usr/include/i386/endian.h:93:9: note: previous definition is here
#define LITTLE_ENDIAN   __DARWIN_LITTLE_ENDIAN
        ^
In file included from
/Users/mojca/app/fizika/gate/gate_v6.2/source/digits_hits/src/GatePhaseSpaceActor.cc:27:
In file included from
/Users/mojca/app/fizika/gate/gate_v6.2/source/general/include/GateIAEAHeader.h:5:
In file included from
/Users/mojca/app/fizika/gate/gate_v6.2/source/general/include/GateIAEARecord.h:6:
/Users/mojca/app/fizika/gate/gate_v6.2/source/general/include/GateIAEAUtilities.h:84:9:
warning: 'BIG_ENDIAN' macro redefined
#define BIG_ENDIAN      __BIG_ENDIAN
        ^
/usr/include/i386/endian.h:94:9: note: previous definition is here
#define BIG_ENDIAN      __DARWIN_BIG_ENDIAN
        ^
In file included from
/Users/mojca/app/fizika/gate/gate_v6.2/source/digits_hits/src/GatePhaseSpaceActor.cc:27:
In file included from
/Users/mojca/app/fizika/gate/gate_v6.2/source/general/include/GateIAEAHeader.h:5:
In file included from
/Users/mojca/app/fizika/gate/gate_v6.2/source/general/include/GateIAEARecord.h:6:
/Users/mojca/app/fizika/gate/gate_v6.2/source/general/include/GateIAEAUtilities.h:85:9:
warning: 'PDP_ENDIAN' macro redefined
#define PDP_ENDIAN      __PDP_ENDIAN
        ^
/usr/include/i386/endian.h:95:9: note: previous definition is here
#define PDP_ENDIAN      __DARWIN_PDP_ENDIAN
        ^
3 warnings generated.


[ 46%] Building CXX object
CMakeFiles/Gate.dir/source/digits_hits/src/GateSimplifiedDecay.cc.o
In file included from
/Users/mojca/app/fizika/gate/gate_v6.2/source/digits_hits/src/GateSimplifiedDecay.cc:12:
/Users/mojca/app/fizika/gate/gate_v6.2/source/digits_hits/include/GateSimplifiedDecay.hh:15:17:
warning: using directive refers to implicitly-defined namespace 'std'
using namespace std;
                ^
1 warning generated.

}}}}}

I would like to make a Portfile for MacPorts, but I first need to
figure out how to solve the problem with linking against CLHEP.

Mojca


More information about the Gate-users mailing list