#---------------------------------------------------------------------------- # Setup the project cmake_minimum_required(VERSION 2.6 FATAL_ERROR) project(AGATA) # #---------------------------------------------------------------------------- # Setup some options # using native ROOT set(useROOT true) # using Geant4.9.5 or Geant4.9.6 #set(G4V495 true) # using Geant4.10 set(G4V10 true) # and using 10.3 set(G4V10_3 true) # and using 10.5 set(G4V10_5 true) # using Graphical User interface # AGATAvis set to "true" leave the user with the choice to run a macros with a specific visualisation driver like VRML # AGATAvis set to "false" will run the macro/visOGL.mac with QT #set(AGATAvis true) set (AGATAvis false) # # using GDML # AGATAgdml set to "true" leave the user with the choice to run with a gdml input file #set(AGATAgdml true) set(AGATAgdml false) # # using Ancillaries set(Ancil true) # using Fixed offset for ancillary set(FixedOffset true) # WriteEv: # Set to true to write out multi-event number # when working in -Ext mode (used for Prisma # simulation set(WriteEv true) #---------------------------------------------------------------------------- # Find Geant4 package, activating all available UI and Vis drivers by default # You can set WITH_GEANT4_UIVIS to OFF via the command line or ccmake/cmake-gui # to build a batch mode only executable # option(WITH_GEANT4_UIVIS "Build example with Geant4 UI and Vis drivers" ON) if(AGATAgdml) if(WITH_GEANT4_UIVIS) find_package(Geant4 REQUIRED ui_all vis_all gdml) else() find_package(Geant4 REQUIRED gdml) endif() else() if(WITH_GEANT4_UIVIS) find_package(Geant4 REQUIRED ui_all vis_all) else() find_package(Geant4 REQUIRED) endif() endif(AGATAgdml) #---------------------------------------------------------------------------- # Setup Geant4 include directories and compile definitions # include(${Geant4_USE_FILE}) # for ROOT include_directories(${PROJECT_SOURCE_DIR}/include) if(useROOT) EXECUTE_PROCESS(COMMAND root-config --cflags OUTPUT_VARIABLE ROOT_CXX_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ROOT_CXX_FLAGS}") endif(useROOT) # For Ancilaries: if(Ancil AND FixedOffset) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DAncil ") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DFIXED_OFFSET ") endif(Ancil AND FixedOffset) if(Ancil) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DAncil") endif(Ancil) if(AGATAvis) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DAGATAvis") endif(AGATAvis) if(AGATAgdml) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DAGATAgdml") endif(AGATAgdml) if(WriteEv) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DWRITE_NUMEV") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ggdb") endif(WriteEv) #---------------------------------------------------------------------------- # Locate sources and headers for this project # include_directories(${PROJECT_SOURCE_DIR}/include ${Geant4_INCLUDE_DIR}) file(GLOB sources ${PROJECT_SOURCE_DIR}/src/*.cc) file(GLOB headers ${PROJECT_SOURCE_DIR}/include/*.hh) #---------------------------------------------------------------------------- # Add the executable, taking into account some compilation flags, and link it to the Geant4 libraries (and potentially ROOT ) # add_executable(Agata Agata.cc ${sources} ${headers}) if(G4V495) SET_TARGET_PROPERTIES(Agata PROPERTIES COMPILE_FLAGS "-DG4V495 -DANCIL -DFIXED_OFFSET") # SET_TARGET_PROPERTIES(Agata PROPERTIES COMPILE_FLAGS "-DG4V495 -DANCIL -DFIXED_OFFSET -DAGATAvis -DWRITE_EVNUM -ggdb") # SET_TARGET_PROPERTIES(Agata PROPERTIES COMPILE_FLAGS "-DG4V495 -DWRITE_EVNUM") endif(G4V495) #if(Ancil) # SET_TARGET_PROPERTIES(Agata PROPERTIES COMPILE_FLAGS "-DG4V495 -DWRITE_EVNUM -DANCIL") #endif(Ancil) #if(AGATAvis) # SET_TARGET_PROPERTIES(Agata PROPERTIES COMPILE_FLAGS "-DG4V495 -DWRITE_EVNUM -DANCIL -DAGATAvis") #endif(AGATAvis) if(G4V10) if(G4V10_5) if(AGATAgdml) if(AGATAvis) SET_TARGET_PROPERTIES(Agata PROPERTIES COMPILE_FLAGS "-DG4V10 -DG4V10_3 -DG4V10_5 -DANCIL -DFIXED_OFFSET -DAGATAvis -DAGATAgdml -DWRITE_EVNUM -ggdb") else(AGATAvis) SET_TARGET_PROPERTIES(Agata PROPERTIES COMPILE_FLAGS "-DG4V10 -DG4V10_3 -DG4V10_5 -DANCIL -DFIXED_OFFSET -DAGATAgdml -DWRITE_EVNUM -ggdb") endif(AGATAvis) else(AGATAgdml) if(AGATAvis) SET_TARGET_PROPERTIES(Agata PROPERTIES COMPILE_FLAGS "-DG4V10 -DG4V10_3 -DG4V10_5 -DANCIL -DFIXED_OFFSET -DAGATAvis -DWRITE_EVNUM -ggdb") else(AGATAsis) SET_TARGET_PROPERTIES(Agata PROPERTIES COMPILE_FLAGS "-DG4V10 -DG4V10_3 -DG4V10_5 -DANCIL -DFIXED_OFFSET -DWRITE_EVNUM -ggdb") endif(AGATAvis) endif(AGATAgdml) else(G4V10_5) if(G4V10_3) if(AGATAgdml) if(AGATAvis) SET_TARGET_PROPERTIES(Agata PROPERTIES COMPILE_FLAGS "-DG4V10 -DG4V10_3 -DANCIL -DFIXED_OFFSET -DAGATAvis -DAGATAgdml -DWRITE_EVNUM -ggdb") else(AGATAvis) SET_TARGET_PROPERTIES(Agata PROPERTIES COMPILE_FLAGS "-DG4V10 -DG4V10_3 -DANCIL -DFIXED_OFFSET -DAGATAgdml -DWRITE_EVNUM -ggdb") endif(AGATAvis) else(AGATAgdml) if(AGATAvis) SET_TARGET_PROPERTIES(Agata PROPERTIES COMPILE_FLAGS "-DG4V10 -DG4V10_3 -DANCIL -DFIXED_OFFSET -DAGATAvis -DWRITE_EVNUM -ggdb") else(AGATAsis) SET_TARGET_PROPERTIES(Agata PROPERTIES COMPILE_FLAGS "-DG4V10 -DG4V10_3 -DANCIL -DFIXED_OFFSET -DWRITE_EVNUM -ggdb") endif(AGATAvis) endif(AGATAgdml) else(G4V10_3) if(AGATAgdml) if(AGATAvis) SET_TARGET_PROPERTIES(Agata PROPERTIES COMPILE_FLAGS "-DG4V10 -DANCIL -DFIXED_OFFSET -DAGATAvis -DAGATAgdml -DWRITE_EVNUM -ggdb") else(AGATAsis) SET_TARGET_PROPERTIES(Agata PROPERTIES COMPILE_FLAGS "-DG4V10 -DANCIL -DFIXED_OFFSET -DAGATAgdml -DWRITE_EVNUM -ggdb") endif(AGATAvis) else(AGATAgdml) if(AGATAvis) SET_TARGET_PROPERTIES(Agata PROPERTIES COMPILE_FLAGS "-DG4V10 -DANCIL -DFIXED_OFFSET -DAGATAvis -DWRITE_EVNUM -ggdb") else(AGATAsis) SET_TARGET_PROPERTIES(Agata PROPERTIES COMPILE_FLAGS "-DG4V10 -DANCIL -DFIXED_OFFSET -DWRITE_EVNUM -ggdb") endif(AGATAvis) endif(AGATAgdml) endif(G4V10_3) endif(G4V10_5) endif(G4V10) target_link_libraries(Agata ${Geant4_LIBRARIES} ) if(useROOT) EXECUTE_PROCESS(COMMAND root-config --libs OUTPUT_VARIABLE ROOT_LD_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) set(CMAKE_EXE_LINKER_FLAGS ${ROOT_LD_FLAGS}) endif(useROOT) #---------------------------------------------------------------------------- # Copy all scripts to the build directory, i.e. the directory in which we # build agata. This is so that we can run the executable directly because it # relies on these scripts being in the current working directory. # #set(AGATA_SCRIPTS # A180/A180clust.list # A180/A180euler.list # A180/A180eulerDemo.list # A180/A180slice.list # A180/A180solid.list # A180/A180walls.list # macros/geom180.mac # macros/geom180.mac # macros/visVRML.mac # macros/visGL.mac # analysis/mgt/mgt.c # analysis/mgt/mgt.h # analysis/mgt/mgt_ancillary.c # analysis/mgt/mgt_buffer.c # analysis/mgt/mgt_eclust.c # analysis/mgt/mgt_etrack.c # analysis/mgt/mgt_event.c # analysis/mgt/mgt_geoagata.c # analysis/mgt/mgt_geobox3.c # analysis/mgt/mgt_geocbar.c # analysis/mgt/mgt_geohbar.c # analysis/mgt/mgt_geomxxx.c # analysis/mgt/mgt_geonone.c # analysis/mgt/mgt_geoshell.c # analysis/mgt/ge_comp.dat # analysis/mgt/ge_pair.dat # analysis/mgt/ge_phot.dat # analysis/mgt/makefile # analysis/mgt/matlib.c # analysis/mgt/matlib.h # analysis/mgt/speclib.c # analysis/mgt/speclib.h # analysis/mgt/useful.h # analysis/mgt/vectorlib.c # analysis/mgt/vectorlib.h # analysis/mgt/ROOTvis/AgataAna.C # ) foreach(_script ${AGATA_SCRIPTS}) configure_file( ${PROJECT_SOURCE_DIR}/${_script} ${PROJECT_BINARY_DIR}/${_script} COPYONLY ) endforeach() #---------------------------------------------------------------------------- # Add program to the project targets # (this avoids the need of typing the program name after make) # add_custom_target(AGATA DEPENDS Agata) #---------------------------------------------------------------------------- # Install the executable to 'bin' directory under CMAKE_INSTALL_PREFIX # install(TARGETS Agata DESTINATION bin)