Geant4 Cross Reference |
1 #--------------------------------------------- 1 #---------------------------------------------------------------------------- 2 # Setup the project 2 # Setup the project 3 cmake_minimum_required(VERSION 3.16...3.27) << 3 cmake_minimum_required(VERSION 3.8...3.18) >> 4 if(${CMAKE_VERSION} VERSION_LESS 3.12) >> 5 cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}) >> 6 endif() 4 project(OpNovice) 7 project(OpNovice) 5 #add_definitions(-DGEANT4_USE_GDML) << 8 6 add_compile_definitions(GEANT4_USE_GDML) << 7 #make using gdml the default << 8 OPTION( GEANT4_USE_GDML "Use gdml Option" ON) << 9 # printout the value of GEANT4_USE_GDML << 10 MESSAGE("?GEANT4_USE_GDML " ${GEANT4_USE_GDML} << 11 #--------------------------------------------- 9 #---------------------------------------------------------------------------- 12 # Find Geant4 package, activating all availabl 10 # Find Geant4 package, activating all available UI and Vis drivers by default 13 # You can set WITH_GEANT4_UIVIS to OFF via the 11 # You can set WITH_GEANT4_UIVIS to OFF via the command line or ccmake/cmake-gui 14 # to build a batch mode only executable 12 # to build a batch mode only executable 15 # 13 # 16 option(WITH_GEANT4_UIVIS "Build example with G 14 option(WITH_GEANT4_UIVIS "Build example with Geant4 UI and Vis drivers" ON) 17 if(WITH_GEANT4_UIVIS) 15 if(WITH_GEANT4_UIVIS) 18 find_package(Geant4 REQUIRED ui_all vis_all) 16 find_package(Geant4 REQUIRED ui_all vis_all) 19 else() 17 else() 20 find_package(Geant4 REQUIRED) 18 find_package(Geant4 REQUIRED) 21 endif() 19 endif() 22 20 23 #--------------------------------------------- 21 #---------------------------------------------------------------------------- 24 # Setup Geant4 include directories and compile 22 # Setup Geant4 include directories and compile definitions 25 # 23 # 26 include(${Geant4_USE_FILE}) 24 include(${Geant4_USE_FILE}) 27 25 28 #--------------------------------------------- 26 #---------------------------------------------------------------------------- 29 # Locate sources and headers for this project 27 # Locate sources and headers for this project 30 # 28 # 31 include_directories(${PROJECT_SOURCE_DIR}/incl 29 include_directories(${PROJECT_SOURCE_DIR}/include 32 ${Geant4_INCLUDE_DIR}) 30 ${Geant4_INCLUDE_DIR}) 33 file(GLOB sources ${PROJECT_SOURCE_DIR}/src/*. 31 file(GLOB sources ${PROJECT_SOURCE_DIR}/src/*.cc) 34 file(GLOB headers ${PROJECT_SOURCE_DIR}/includ 32 file(GLOB headers ${PROJECT_SOURCE_DIR}/include/*.hh) 35 if (GEANT4_USE_GDML) << 33 36 file(GLOB detectors ${PROJECT_SOURCE_DIR}/gdml << 37 endif() << 38 file(GLOB macros ${PROJECT_SOURCE_DIR}/*.mac) << 39 file(GLOB inputs ${PROJECT_SOURCE_DIR}/*.in) << 40 if (NOT GEANT4_USE_GDML) << 41 list(REMOVE_ITEM sources ${PROJECT_SOURCE_DIR} << 42 list(REMOVE_ITEM sources ${PROJECT_SOURCE_DIR} << 43 list(REMOVE_ITEM headers ${PROJECT_SOURCE_DIR} << 44 list(REMOVE_ITEM headers ${PROJECT_SOURCE_DIR} << 45 endif() << 46 #--------------------------------------------- 34 #---------------------------------------------------------------------------- 47 # Add the executable, and link it to the Geant 35 # Add the executable, and link it to the Geant4 libraries 48 # 36 # 49 add_executable(OpNovice OpNovice.cc ${sources} 37 add_executable(OpNovice OpNovice.cc ${sources} ${headers}) 50 target_link_libraries(OpNovice ${Geant4_LIBRAR 38 target_link_libraries(OpNovice ${Geant4_LIBRARIES} ) 51 39 52 #--------------------------------------------- 40 #---------------------------------------------------------------------------- 53 # Copy all scripts to the build directory, i.e 41 # Copy all scripts to the build directory, i.e. the directory in which we 54 # build OpNovice. This is so that we can run t 42 # build OpNovice. This is so that we can run the executable directly because it 55 # relies on these scripts being in the current 43 # relies on these scripts being in the current working directory. 56 # 44 # 57 set(OpNovice_SCRIPTS 45 set(OpNovice_SCRIPTS 58 OpNovice.out 46 OpNovice.out 59 OpNovice.in 47 OpNovice.in 60 optPhoton.mac 48 optPhoton.mac 61 gui.mac 49 gui.mac 62 vis.mac 50 vis.mac 63 ) 51 ) 64 52 65 foreach(_script ${OpNovice_SCRIPTS}) 53 foreach(_script ${OpNovice_SCRIPTS}) 66 configure_file( 54 configure_file( 67 ${PROJECT_SOURCE_DIR}/${_script} 55 ${PROJECT_SOURCE_DIR}/${_script} 68 ${PROJECT_BINARY_DIR}/${_script} 56 ${PROJECT_BINARY_DIR}/${_script} 69 COPYONLY 57 COPYONLY 70 ) 58 ) 71 endforeach() 59 endforeach() 72 60 73 #--------------------------------------------- 61 #---------------------------------------------------------------------------- 74 # Install the executable to 'bin' directory un 62 # Install the executable to 'bin' directory under CMAKE_INSTALL_PREFIX 75 # 63 # 76 install(TARGETS OpNovice DESTINATION bin) 64 install(TARGETS OpNovice DESTINATION bin) 77 if (GEANT4_USE_GDML) << 65 78 install(FILES ${detectors} ${macros} ${inputs} << 79 else() << 80 install(FILES ${macros} ${inputs} DESTINATION << 81 endif() <<