-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
139 lines (103 loc) · 4.45 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
project(cigarfilter)
cmake_minimum_required(VERSION 3.5.2)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_BUILD_TYPE Release)
set(CMAKE_CXX_FLAGS --coverage)
#set(-static-libgcc -static-libstdc++)
#############################################################################
# Run "conan install" from CMake :
# See : https://github.com/conan-io/cmake-conan Run conan install
list(APPEND CMAKE_MODULE_PATH ${CMAKE_BINARY_DIR})
list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR})
# It requires to have either this file already copied on the repository, or to download it
if(NOT EXISTS "${CMAKE_BINARY_DIR}/conan.cmake")
message(STATUS "Downloading conan.cmake from https://github.com/conan-io/cmake-conan")
file(DOWNLOAD "https://raw.githubusercontent.com/conan-io/cmake-conan/0.18.1/conan.cmake"
"${CMAKE_BINARY_DIR}/conan.cmake"
TLS_VERIFY ON)
endif()
include(${CMAKE_BINARY_DIR}/conan.cmake)
conan_cmake_configure(REQUIRES
gtest/1.12.1
boost/1.80.0
lyra/1.5.1
spdlog/1.9.2
GENERATORS cmake)
conan_cmake_autodetect(settings)
add_definitions("-std=c++17")
conan_cmake_install(PATH_OR_REFERENCE .
BUILD missing
REMOTE conancenter
SETTINGS ${settings})
#############################################################################
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup(TARGETS)
#############################################################################
# Ship the header in the plugin template
file(COPY ${CMAKE_SOURCE_DIR}/include/cigarfilter_plugin.hpp DESTINATION ${CMAKE_SOURCE_DIR}/cigarfilter/resources/plugin_template/src/)
# cigarfilter executable
include_directories(include)
include_directories(src/lib)
file(GLOB_RECURSE SOURCES RELATIVE ${CMAKE_SOURCE_DIR} "src/lib/*.cpp")
add_executable(${PROJECT_NAME}
src/lib/cigarfilter.hpp
src/executable/main.cpp
${SOURCES})
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_11)
conan_target_link_libraries(${PROJECT_NAME} ${CONAN_LIBS})
# Examples
# DEFAULT FILTER
add_library(default SHARED
examples/default.cpp)
target_compile_features(default PRIVATE cxx_std_11)
conan_target_link_libraries(default ${CONAN_LIBS})
SET_TARGET_PROPERTIES(default PROPERTIES PREFIX "")
# ITERATE GROUPS (TUTO N°1)
add_library(iterate_groups SHARED
examples/iterate_groups.cpp)
target_compile_features(iterate_groups PRIVATE cxx_std_11)
conan_target_link_libraries(iterate_groups ${CONAN_LIBS})
SET_TARGET_PROPERTIES(iterate_groups PROPERTIES PREFIX "")
# EXAMPLES
add_library(example1 SHARED
examples/example1.cpp)
target_compile_features(example1 PRIVATE cxx_std_11)
conan_target_link_libraries(example1 ${CONAN_LIBS})
SET_TARGET_PROPERTIES(example1 PROPERTIES PREFIX "")
add_library(example2 SHARED
examples/example2.cpp)
target_compile_features(example2 PRIVATE cxx_std_11)
conan_target_link_libraries(example2 ${CONAN_LIBS})
SET_TARGET_PROPERTIES(example2 PROPERTIES PREFIX "")
add_library(example3 SHARED
examples/example3.cpp)
target_compile_features(example3 PRIVATE cxx_std_11)
conan_target_link_libraries(example3 ${CONAN_LIBS})
SET_TARGET_PROPERTIES(example3 PROPERTIES PREFIX "")
add_library(example4 SHARED
examples/example4.cpp)
target_compile_features(example4 PRIVATE cxx_std_11)
conan_target_link_libraries(example4 ${CONAN_LIBS})
SET_TARGET_PROPERTIES(example4 PROPERTIES PREFIX "")
## Tests
enable_testing()
add_executable(${PROJECT_NAME}_test
${SOURCES}
src/tests/CIGAR.t.cpp
src/tests/plugin_helpers.t.cpp
src/tests/examples.t.cpp
src/lib/cigarfilter.hpp
include/cigarfilter_plugin.hpp
)
target_compile_features(${PROJECT_NAME}_test PRIVATE cxx_std_11)
conan_target_link_libraries(${PROJECT_NAME}_test cigarfilter ${CONAN_LIBS})
# Installation...
install(TARGETS ${PROJECT_NAME} DESTINATION bin)
install(TARGETS ${PROJECT_NAME}_test DESTINATION bin)
# Install example plugins
install(TARGETS default DESTINATION ${CMAKE_SOURCE_DIR}/cigarfilter/resources/plugins)
install(TARGETS iterate_groups DESTINATION ${CMAKE_SOURCE_DIR}/cigarfilter/resources/plugins)
install(TARGETS example1 DESTINATION ${CMAKE_SOURCE_DIR}/cigarfilter/resources/plugins)
install(TARGETS example2 DESTINATION ${CMAKE_SOURCE_DIR}/cigarfilter/resources/plugins)
install(TARGETS example3 DESTINATION ${CMAKE_SOURCE_DIR}/cigarfilter/resources/plugins)
install(TARGETS example4 DESTINATION ${CMAKE_SOURCE_DIR}/cigarfilter/resources/plugins)