-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathCMakeLists.txt
76 lines (56 loc) · 2.48 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
# The name of the project
PROJECT (nn4mc
LANGUAGES C CXX)
# Minimum version of cmake required
CMAKE_MINIMUM_REQUIRED (VERSION 3.5)
SET (CMAKE_INCLUDE_CURRENT_DIR ON)
# Boost library:
SET (Boost_USE_STATIC_LIBS OFF)
SET (Boost_USE_MULTITHREAD ON)
SET (Boost_USE_STATIC_RUNTIME OFF)
IF (APPLE)
SET(CMAKE_MACOSX_RPATH 1)
ENDIF()
OPTION (NN4MP_USE_EXTERNAL_JSON "Use an external JSON library" OFF)
# Packages needed for this project
FIND_PACKAGE (HDF5 COMPONENTS C CXX HL REQUIRED)
FIND_PACKAGE (Boost COMPONENTS thread system filesystem program_options REQUIRED)
FIND_PACKAGE (Boost CONFIG)
MESSAGE (STATUS "HDF5 INCLUDE LOCATION: " ${HDF5_INCLUDE_DIRS})
MESSAGE (STATUS "HDF5 LIBRARIES: " ${HDF5_LIBRARIES})
MESSAGE (STATUS "HDF5 HL LIBRARIES: " ${HDF5_HL_LIBRARIES})
MESSAGE (STATUS "HDF5_CXX_LIBRARIES: " ${HDF5_CXX_LIBRARIES})
MESSAGE (STATUS "HDF5 version: " ${HDF5_VERSION})
MESSAGE (STATUS "Boost version: ${Boost_VERSION}")
# Add other flags to the compiler
SET (CMAKE_CXX_FLAGS "-g -lboost_program_options")
# Use C++11
SET (CMAKE_CXX_STANDARD 11)
SET (CMAKE_CXX_STANDARD_REQUIRED ON)
SET (CMAKE_CXX_EXTENSIONS OFF)
# Version Number
SET (nn4mc_VERSION_MAJOR 0)
SET (nn4mc_VERSION_MINOR 0)
# Add the library directory
ADD_SUBDIRECTORY(lib)
# Bring the headers and source files into the project
INCLUDE_DIRECTORIES (src)
INCLUDE_DIRECTORIES (data)
INCLUDE_DIRECTORIES (include)
INCLUDE_DIRECTORIES (libraries)
INCLUDE_DIRECTORIES (${HDF5_INCLUDE_DIRS})
INCLUDE_DIRECTORIES (${Boost_INCLUDE_DIR})
SET (LIBS_TO_LINK ${Boost_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${HDF5_LIBRARIES} ${HDF5_CXX_LIBRARIES})
FILE (GLOB CORE_LIB src/*.cpp src/datastructures/*.cpp src/parser/*.cpp src/generator/*.cpp)
# Build libraries
ADD_LIBRARY (nn4mc_core SHARED ${CORE_LIB})
TARGET_LINK_LIBRARIES(nn4mc_core PRIVATE nlohmann_json::nlohmann_json)
TARGET_LINK_LIBRARIES(nn4mc_core PUBLIC ${HDF5_HL_LIBRARIES} ${HDF5_CXX_LIBRARIES} ${HDF5_LIBRARIES} ${HDF5_LIB_TARGET})
TARGET_LINK_LIBRARIES(nn4mc_core PUBLIC hdf5_cpp)
TARGET_LINK_LIBRARIES(nn4mc_core PUBLIC ${Boost_FILESYSTEM_LIBRARY} ${Boost_SYSTEM_LIBRARY} ${Boost_LIBRARIES} ${Boost_PROGRAM_OPTIONS_LIBRARY})
# Add the executable
ADD_EXECUTABLE (h5_nn4mc examples/generator_test_actual_file.cpp)
TARGET_LINK_LIBRARIES (h5_nn4mc nn4mc_core)
TARGET_LINK_LIBRARIES (h5_nn4mc nlohmann_json::nlohmann_json)
TARGET_LINK_LIBRARIES (h5_nn4mc ${HDF5_LIBRARIES} ${HDF5_CXX_LIBRARIES} ${HDF5_LIBRARIES})
TARGET_LINK_LIBRARIES (h5_nn4mc ${Boost_LIBRARIES} ${Boost_PROGRAM_OPTIONS_LIBRARY})