-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
140 lines (113 loc) · 3.96 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#----------------------------------------------------------------------------
# Setup the project
cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
project(G4KUNPL)
set(useROOT 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(WITH_GEANT4_UIVIS)
find_package(Geant4 REQUIRED ui_all vis_all)
else()
find_package(Geant4 REQUIRED)
endif()
#----------------------------------------------------------------------------
# Set G4KUNPL source directories and executables
#
set(KUNPLEx_SOURCE_DIRECTORIES
Ex1
Ex2
Ex3
)
set(KUNPLEx_EXECUTABLES
KUNPLEx1
KUNPLEx1_Action
KUNPLEx2
KUNPLEx3
)
if(useROOT)
list(APPEND KUNPLEx_SOURCE_DIRECTORIES
Ex1/ROOT
)
list(APPEND KUNPLEx_EXECUTABLES
KUNPLEx1_ROOT
)
endif(useROOT)
#----------------------------------------------------------------------------
# Set variables
#
set(KUNPLEx_SOURCES_DIRECTORIES_FULL)
foreach(_directory ${KUNPLEx_SOURCE_DIRECTORIES})
list(APPEND KUNPLEx_SOURCE_DIRECTORIES_FULL ${PROJECT_SOURCE_DIR}/${_directory})
endforeach(_directory)
set(KUNPLEx_SOURCES)
foreach(_directory ${KUNPLEx_SOURCE_DIRECTORIES_FULL})
list(APPEND KUNPLEx_SOURCES ${_directory}/*.cc)
endforeach(_directory)
set(KUNPLEx_HEADERS)
foreach(_directory ${KUNPLEx_SOURCE_DIRECTORIES_FULL})
list(APPEND KUNPLEx_HEADERS ${_directory}/*.hh)
endforeach(_directory)
#----------------------------------------------------------------------------
# Setup Geant4 include directories and compile definitions
# Setup include directory for this project
#
include(${Geant4_USE_FILE})
include_directories(${KUNPLEx_SOURCE_DIRECTORIES_FULL})
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)
#----------------------------------------------------------------------------
# Locate sources and headers for this project
# NB: headers are included so they will show up in IDEs
#
file(GLOB sources ${KUNPLEx_SOURCES})
file(GLOB headers ${KUNPLEx_HEADERS})
#----------------------------------------------------------------------------
# Add the executable, and link it to the Geant4 libraries
#
foreach(_executable ${KUNPLEx_EXECUTABLES})
add_executable(${_executable} ${_executable}.cc ${sources} ${headers})
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)
target_link_libraries(${_executable} ${Geant4_LIBRARIES})
endforeach(_executable)
#----------------------------------------------------------------------------
# Copy all scripts to the build directory, i.e. the directory in which we
# build G4KUNPL. This is so that we can run the executable directly because it
# relies on these scripts being in the current working directory.
#
set(KUNPLEx_SCRIPTS
macros/init.mac
macros/init_vis.mac
macros/vis.mac
macros/run1.mac
#macros/run2.mac
macros/init2.mac
macros/init_vis2.mac
macros/vis2.mac
)
foreach(_script ${KUNPLEx_SCRIPTS})
configure_file(
${PROJECT_SOURCE_DIR}/${_script}
${PROJECT_BINARY_DIR}/${_script}
COPYONLY
)
endforeach(_script)
#----------------------------------------------------------------------------
# For internal Geant4 use - but has no effect if you build this
# example standalone
#
add_custom_target(G4KUNPL DEPENDS ${KUNPLEx_EXECUTABLES})
#----------------------------------------------------------------------------
# Install the executable to 'bin' directory under CMAKE_INSTALL_PREFIX
#
foreach(_executable ${KUNPLEx_EXECUTABLES})
install(TARGETS ${_executable} DESTINATION bin)
endforeach(_executable)