forked from FraCorti/CMProject
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
102 lines (93 loc) · 3.46 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
cmake_minimum_required(VERSION 3.15)
project(CMProject VERSION 1.0.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
# fix
list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
# find package needed by the project
find_package(Threads REQUIRED)
find_package(OpenMP REQUIRED)
find_package(GUROBI)
# if not specified force Relase build type
if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
endif ()
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
set(CMAKE_CXX_FLAGS_DEBUG "-Wall -Wextra -O0 -fstack-check -fstack-protector-strong -fno-omit-frame-pointer -g -DDEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "-O3") # To view vectorization -ftree-vectorize -fopt-info-vec
# configure conan and add libraries
if (EXISTS ${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()
else ()
message(WARNING "The file conanbuildinfo.cmake doesn't exist, you have to run conan install first")
endif ()
# create Neuradillo library target
add_library(Neuradillo
STATIC
src/layer/layer.cpp
src/layer/layer.h
src/network/network.cpp
src/network/network.h
src/preprocessing/preprocessing.cpp
src/preprocessing/preprocessing.h
src/preprocessing/preprocessing.cpp
src/preprocessing/preprocessing.h
src/activationFunction/activationFunction.h
src/activationFunction/tanhFunction.cpp
src/activationFunction/tanhFunction.h
src/activationFunction/logisticFunction.cpp
src/activationFunction/logisticFunction.h
src/load/loadDataset.cpp
src/load/loadDataset.h
src/lossFunction/lossFunction.h
src/lossFunction/meanSquaredError.cpp
src/lossFunction/meanSquaredError.h
src/activationFunction/reluFunction.cpp
src/activationFunction/reluFunction.h
src/lossFunction/binaryCrossentropy.cpp
src/lossFunction/binaryCrossentropy.h
src/gridSearch/gridSearch.cpp
src/gridSearch/gridSearch.h
src/activationFunction/linearFunction.cpp
src/activationFunction/linearFunction.h
src/crossValidation/crossValidation.cpp
src/crossValidation/crossValidation.h
src/lossFunction/meanEuclideanError.cpp
src/lossFunction/meanEuclideanError.h
src/gridSearch/parallelGridSearch.cpp
src/gridSearch/parallelGridSearch.h
src/optimizer/optimizer.h
src/optimizer/gradientDescent.cpp
src/optimizer/gradientDescent.h
src/optimizer/LBFGS.cpp
src/optimizer/LBFGS.h
src/exception/exception.cpp
src/exception/exception.h
src/optimizer/ProximalBundleMethod.cpp
src/optimizer/ProximalBundleMethod.h
src/regularizer/regularizer.h
src/regularizer/L1.cpp
src/regularizer/L1.h
src/regularizer/L2.cpp
src/regularizer/L2.h)
target_include_directories(Neuradillo
PUBLIC
${GUROBI_INCLUDE_DIRS}
)
target_link_libraries(Neuradillo
${CONAN_LIBS}
OpenMP::OpenMP_CXX
Threads::Threads
optimized ${GUROBI_CXX_LIBRARY}
debug ${GUROBI_CXX_DEBUG_LIBRARY}
${GUROBI_LIBRARY}
)
set_target_properties(Neuradillo PROPERTIES
CXX_STANDARD 17
LINKER_LANGUAGE CXX)
# create main target
add_executable(main main.cpp)
set_target_properties(main PROPERTIES
CXX_STANDARD 17
LINKER_LANGUAGE CXX)
target_link_libraries(main Neuradillo)