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