Message: Re: How can we use root in Geant4.9.5 with cmake on Windows7 or ubuntu Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

Note Re: How can we use root in Geant4.9.5 with cmake on Windows7 or ubuntu 

Forum: Installation and Configuration
Re: None How can we use root in Geant4.9.5 with cmake on Windows7 or ubuntu (Fada Guan)
Re: Note Re: How can we use root in Geant4.9.5 with cmake on Windows7 or ubuntu (Ben Morgan)
Re: None Re: How can we use root in Geant4.9.5 with cmake on Windows7 or ubuntu (Fada Guan)
Date: 22 May, 2012
From: Ben Morgan <Ben Morgan>

On Tue, 22 May 2012 17:16:07 GMT, Fada Guan wrote:
> It works for linux, but it does not work for windows because root-config
> on windows is not an executable file, which is used in FindRoot.cmake.
> Could you also please provide an example to demonstrate how to integrate
> root in geant4?

The FindROOT.cmake module is supplied by ROOT, so the best thing is to report the issue to them for resolution.

> I also met another question, which is how to let cmake know the
> environment variables settings.
> 
> For example, I set an environment G4ANALYSIS_USE_ROOT = 1 in .bashrc,
> and I defined below lines in my source files.
> 
> #ifdef G4UI_USE
> #include "G4UIExecutive.hh"
> #endif
> 
> #ifdef G4VIS_USE
> #include "G4VisExecutive.hh"
> #endif
> 
> #ifdef G4ANALYSIS_USE_ROOT
> #include "TROOT.h"
> #include "TH1D.h"
> #include "TCanvas.h"
> #endif
> 
> For G4UI_USE and G4VIS_USE, it's OK (I guess cmake knows they have been
> set). But for G4ANALYSIS_USE_ROOT, no effect at all. I tried to set it
> in cmakelists.txt
> 
> set(G4ANALYSIS_USE_ROOT 1)
> 
> unfortunately, this setting did not take effect for cmake.
> 
> The funny thing is if I cancel the setting of this variable, and changed
> the line to #ifndef G4ANALYSIS_USE_ROOT, yes, it's OK and cmake knows
> this variable has not been set.
> 
> Could you provide more guidance?

CMake doesn't, as such, use the environment for configuration. It can read the environment (see the CMake documentation), but a better solution for your case would be CMake code along the lines of.

# This gives you a comand line/ccmake/GUI option to switch ROOT usage on/off
option(MYAPP_WITH_ROOT "Build MyApp with ROOT support" OFF)

# If we want ROOT support, find it, and add a compile definition
if(MYAPP_WITH_ROOT)
  # Find ROOT, failing if we don't locate it (the REQUIRED flag)
  find_package(ROOT REQUIRED)

  # If we found ROOT, add a compile definition (i.e. -DG4ANALYSIS_USE_ROOT
  # - this will enable compilation the lines between the #ifdef/#endif
  if(ROOT_FOUND)
    add_definitions(-DG4ANALYSIS_USE_ROOT)
  endif()
endif()

You'll still need to add in include_directories and link your application, but we discussed that earlier.

Hope that helps

Ben

Inline Depth:
 1 1
 All All
Outline Depth:
 1 1
 2 2
 All All
Add message: (add)

1 None: Re: How can we use root in Geant4.9.5 with cmake on Windows7 or ubuntu   (Fada Guan - 23 May, 2012)
(_ None: Re: How can we use root in Geant4.9.5 with cmake on Windows7 or ubuntu   (Ben Morgan - 24 May, 2012)
(_ None: Re: How can we use root in Geant4.9.5 with cmake on Windows7 or ubuntu   (Fada Guan - 24 May, 2012)
(_ None: Re: How can we use root in Geant4.9.5 with cmake on Windows7 or ubuntu   (Fada Guan - 25 May, 2012)
 Add Message Add Message
to: "Re: How can we use root in Geant4.9.5 with cmake on Windows7 or ubuntu"

 Subscribe Subscribe

This site runs SLAC HyperNews version 1.11-slac-98, derived from the original HyperNews


[ Geant 4 Home | Geant 4 HyperNews | Search | Request New Forum | Feedback ]