Geant4 Cross Reference |
1 #---------------------------------------------------------------------------- 2 # Setup the project 3 cmake_minimum_required(VERSION 3.16...3.27) 4 project(dnadamage1) 5 6 #---------------------------------------------------------------------------- 7 # Find Geant4 package, activating all available Vis drivers by default 8 # You can set WITH_GEANT4_VIS to OFF via the command line or ccmake/cmake-gui 9 # to build a batch mode only executable 10 # 11 option(WITH_GEANT4_VIS "Build example with Geant4 Vis drivers" ON) 12 if(WITH_GEANT4_VIS) 13 find_package(Geant4 REQUIRED vis_all) 14 else() 15 find_package(Geant4 REQUIRED) 16 endif() 17 18 #---------------------------------------------------------------------------- 19 # Setup Geant4 include directories and compile definitions 20 # 21 include(${Geant4_USE_FILE}) 22 23 #---------------------------------------------------------------------------- 24 # Dowload geometry data file 25 26 set(GEOMETRY_NEEDS_DOWNLOAD TRUE) 27 set(GEOMETRY_FILE_NAME "VoxelStraight.fab2g4dna") 28 set(GEOMETRY_LOCAL_FILENAME "${PROJECT_BINARY_DIR}/${GEOMETRY_FILE_NAME}") 29 set(GEOMETRY_DATASETS_URL 30 "https://cern.ch/geant4-data/examples/dna/dnadamage1/${GEOMETRY_FILE_NAME}") 31 set(HASH_MD5 "3e28151dc4c4647af3ae37d0385fc443") 32 33 if(EXISTS "${GEOMETRY_FILE_NAME}") 34 set(GEOMETRY_NEEDS_DOWNLOAD FALSE) 35 endif() 36 37 38 if(GEOMETRY_NEEDS_DOWNLOAD) 39 message(STATUS "Geometry-data: attempting download: ${GEOMETRY_DATASETS_URL}") 40 file(DOWNLOAD "${GEOMETRY_DATASETS_URL}" "${GEOMETRY_LOCAL_FILENAME}" 41 INACTIVITY_TIMEOUT 50 42 TIMEOUT 50 43 STATUS DownloadStatus 44 ) 45 46 list(GET DownloadStatus 0 DownloadReturnStatus) 47 if(DownloadReturnStatus) 48 message(STATUS "Geometry-data: download FAILED: ${DownloadReturnStatus}, 49 This example needs internet for the geometry data file, 50 even configuring done and complied. 51 Please, check your connection. 52 ") 53 else() 54 message(STATUS "Geometry-data: download OK") 55 endif() 56 endif() 57 58 #---------------------------------------------------------------------------- 59 # Locate sources and headers for this project 60 # 61 62 include_directories(${PROJECT_SOURCE_DIR}/include 63 ${Geant4_INCLUDE_DIR}) 64 file(GLOB sources ${PROJECT_SOURCE_DIR}/src/*.cc) 65 file(GLOB headers ${PROJECT_SOURCE_DIR}/include/*.hh) 66 67 #---------------------------------------------------------------------------- 68 # Add the executable, and link it to the Geant4 libraries 69 # 70 add_executable(dnadamage1 dnadamage1.cc ${sources} ${headers}) 71 target_link_libraries(dnadamage1 ${Geant4_LIBRARIES} ) 72 73 #---------------------------------------------------------------------------- 74 # Copy all scripts to the build directory, i.e. the directory in which we 75 # build dnadamage1. This is so that we can run the executable directly because it 76 # relies on these scripts being in the current working directory. 77 # 78 79 file(GLOB MAC_FILES ${PROJECT_SOURCE_DIR}/*.mac 80 ${PROJECT_SOURCE_DIR}/*.in 81 ${PROJECT_SOURCE_DIR}/*.C 82 ${PROJECT_SOURCE_DIR}/include/DNAVolumeType.hh 83 ${PROJECT_SOURCE_DIR}/*.fab2g4dna) 84 85 foreach(_script ${MAC_FILES}) 86 configure_file( 87 ${_script} 88 ${PROJECT_BINARY_DIR}/. 89 COPYONLY 90 ) 91 endforeach() 92 93 #---------------------------------------------------------------------------- 94 # Install the executable to 'bin' directory under CMAKE_INSTALL_PREFIX 95 # 96 install(TARGETS dnadamage1 DESTINATION bin) 97 98