|Message: Re: C++11 standard not being used Geant4-10.01.p02||Not Logged In (login)|
Click on the Forum title, e.g. on the "Forums by Category" page, to read a sequence of postings to the Forum and its threads all in one page. If you are only interested in one thread or the thread following a specific posting, click the thread or the posting, which takes you to a smaller page, which contains only the part you are interested in and may be easier to navigate.
Messages are "chained" if there are only replies at the first level, i.e. 1/1.html, 1/1/1.html etc. In case of "chained" messages the message number is replaced by the icon and there is no indentation.
Inline: Display the subject line only or also the text of the posting(s); for the choice "All" the "Outline" choices are switched off.
|1||0||1||no text / full text of posting|
|2||1||All||text for level 1 only / text for All postings|
Outline: Choose the depth of the posting thread, successive toggle controls provide increasing detail.
|1||2||1||2 levels / 1 level (original posting)|
|2||3||2||3 levels / 2 levels|
|3||3||All||3 levels / all levels (all postings)|
On Thu, 25 Feb 2016 12:02:15 GMT, Marcus O'Flaherty wrote: > I am trying to migrate my application from Geant4-9.04 to > Geant4-10.01.p02, so need to move from using GNUmake to CMake. > I am using the g++4.9 compiler, and have downloaded and built ROOT > 6.04.14 with the -Dcxx11=ON flag (I believe it is set by default > anyway). > I've then run CMake to generate build scripts for my application with > the option -DGEANT4_BUILD_CXXSTD=11. Again, I believe geant4-10.01.p02 > sets this by default, but this time I receive a message saying that > manually specified variables were not used: > > cmake > -DGeant4_DIR=/home/marc/LinuxSystemFiles/GEANT4/geant4-10.01.p02/install/lib/Geant4-10.1.2/ > -DCMAKE_INSTALL_PREFIX=/usr -DGEANT4_BUILD_CXXSTD=11 ../WChSandBox_v1 > -- The C compiler identification is GNU 4.9.2 > -- The CXX compiler identification is GNU 4.9.2 > -- Check for working C compiler: /usr/bin/cc > -- Check for working C compiler: /usr/bin/cc -- works > -- Detecting C compiler ABI info > -- Detecting C compiler ABI info - done > -- Detecting C compile features > -- Detecting C compile features - done > -- Check for working CXX compiler: /usr/bin/c++ > -- Check for working CXX compiler: /usr/bin/c++ -- works > -- Detecting CXX compiler ABI info > -- Detecting CXX compiler ABI info - done > -- Detecting CXX compile features > -- Detecting CXX compile features - done > -- Configuring done > -- Generating done > CMake Warning: > Manually-specified variables were not used by the project: > > GEANT4_BUILD_CXXSTD > > > -- Build files have been written to: > /home/marc/LinuxSystemFiles/WChSandBox/build > > My CMakeCache.txt file nonetheless contains the line: > GEANT4_BUILD_CXXSTD:UNINITIALIZED=11 > which seems to suggest that even though my manual specifcation has been > ignored, it still uses this option as an uninitialised default. > But still, when I run 'make' I receive error messages suggesting C++11 > is not being specified: > > In file included from /usr/include/c++/4.9/atomic:38:0, > from /usr/local/include/Rtypes.h:37, > from /usr/local/include/TObject.h:31, > from /usr/local/include/TNamed.h:26, > from /usr/local/include/TBranch.h:28, > from /usr/local/include/TTree.h:30, > from > /home/marc/LinuxSystemFiles/WChSandBox/WChSandBox_v1/include/WCLitePrimaryGeneratorAction.hh:7, > from > /home/marc/LinuxSystemFiles/WChSandBox/WChSandBox_v1/WChSandBox.cc:54: > /usr/include/c++/4.9/bits/c++0x_warning.h:32:2: error: #error This file > requires compiler and library support for the ISO C++ 2011 standard. > This support is currently experimental, and must be enabled with the > -std=c++11 or -std=gnu++11 compiler options. > > I have searched HyperNews and only found one thread documenting a > similar issue with 10.01 .p01 , but the issue should be fixed in the > next patch - which I have. > Does this look like a Geant issue? A ROOT issues? Can anyone suggest any > measures/checks? Is this fix really in patch 02?
To build a client application against the same standard used to build Geant4 (in 10.1 and below), the
If you need to validate that the install found was compiled against C++11, the
If your application can be upgraded to support Geant4 10.2 and CMake 3.2 or higher, then you can use CMake's compile features to handle all of this automatically. Simply linking to the Geant4 libraries in this case will apply the correct flags for the standard in question.
|Inline Depth:||Outline Depth:||Add message:|