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