-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
155 lines (125 loc) · 4.63 KB
/
CMakeLists.txt
File metadata and controls
155 lines (125 loc) · 4.63 KB
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
cmake_minimum_required(VERSION 2.8)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
###########################################################
# PROJECT SPECIFIC INFO
###########################################################
project (answer)
set (PROJECT_VERSION 0.2)
set (PROJECT_VERSION_SO 0)
add_definitions("-std=c++14 -pedantic -Wall")
###################### #####################################
# INCLUDES, SOURCE FILES AND CMAKE MODULES
###########################################################
find_package(Boost COMPONENTS system serialization date_time filesystem REQUIRED QUIET)
include_directories(SYSTEM
${Boost_INCLUDE_DIRS}
)
enable_testing()
include(CTest)
#Generic adapter files
set (ADAPTER_SRC_FILES "src/Adapter.cpp" "src/Codec.cpp" "src/archive/ws_xml_iarchive.cpp" "src/archive/ws_xml_oarchive.cpp" "src/Operation.cpp" "src/Exception.cpp" "src/Cookie.cpp" "src/Environment.cpp" "src/Context.cpp")
#Module support files
set (MODULE_SRC_FILES "src/Cookie.cpp" "src/Module.cpp" "src/Exception.cpp" "src/Environment.cpp" "src/Context.cpp")
file (GLOB headersHH
include/answer/*.hh)
file (GLOB headersArchiveHH
include/answer/archive/*.hpp)
###########################################################
# TARGET GENERATION
###########################################################
#Module support
add_library (answer-module SHARED ${MODULE_SRC_FILES})
set_target_properties(answer-module PROPERTIES
VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION_SO})
target_link_libraries (answer-module
${Boost_LIBRARIES}
)
target_include_directories (answer-module
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/>
$<INSTALL_INTERFACE:include/> # <prefix>/include/mylib
)
#Library
add_library (answer SHARED ${ADAPTER_SRC_FILES})
set_target_properties(answer PROPERTIES
VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION})
target_link_libraries (answer
"dl"
${Boost_LIBRARIES}
)
target_include_directories (answer
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/>
$<INSTALL_INTERFACE:include/> # <prefix>/include/mylib
)
add_subdirectory(examples)
option(APACHE_ADAPTER "compile the native apache module adapter" true)
option(FCGI_ADAPTER "compile the fastcgi++ adapter" true)
option(AXIS_ADAPTER "compile the axis2/C adapter" true)
option(MONGOOSE_ADAPTER "compile the Mongoose adapter" false)
if (APACHE_ADAPTER)
add_subdirectory(adapters/ApacheModule)
endif()
if (FCGI_ADAPTER)
add_subdirectory(adapters/FCGI)
endif()
if (AXIS_ADAPTER)
add_subdirectory(adapters/Axis2c)
endif()
if (MONGOOSE_ADAPTER)
add_subdirectory(adapters/Mongoose)
endif()
include(GenerateExportHeader)
generate_export_header(answer)
install (TARGETS answer EXPORT AnswerTargets
LIBRARY DESTINATION lib
INCLUDES DESTINATION include
)
install (TARGETS answer-module EXPORT AnswerTargets
LIBRARY DESTINATION lib
COMPONENT library)
install (FILES ${headersHH} DESTINATION include/answer COMPONENT Devel)
install (FILES ${headersArchiveHH} DESTINATION include/answer/archive COMPONENT Devel)
option(CodeCoverage "Build support for code coverage (requires -DCMAKE_BUILD_TYPE=Debug)" OFF)
if (CodeCoverage)
message (STATUS "Building with code coverage support")
set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0 -Wall -W -Wshadow -Wunused-variable -Wunused-parameter -Wunused-function -Wunused -Wno-system-headers -Wno-deprecated -Woverloaded-virtual -Wwrite-strings -fprofile-arcs -ftest-coverage")
set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g -O0 -Wall -W -fprofile-arcs -ftest-coverage")
set (CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage")
set (CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage")
endif()
add_subdirectory(tests)
# Packaging
include(CMakePackageConfigHelpers)
write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/Answer/AnswerConfigVersion.cmake"
VERSION ${Upstream_VERSION}
COMPATIBILITY SameMajorVersion
)
export(EXPORT AnswerTargets
FILE "${CMAKE_CURRENT_BINARY_DIR}/Answer/AnswerTargets.cmake"
# NAMESPACE Answer::
)
set(INCLUDE_INSTALL_DIR "answer/include/")
set(ConfigPackageLocation lib/cmake/answer)
configure_package_config_file(cmake/AnswerConfig.cmake
"${CMAKE_CURRENT_BINARY_DIR}/Answer/AnswerConfig.cmake"
INSTALL_DESTINATION ${ConfigPackageLocation}
PATH_VARS INCLUDE_INSTALL_DIR
)
install(EXPORT AnswerTargets
FILE
AnswerTargets.cmake
DESTINATION
${ConfigPackageLocation}
)
install(
FILES
cmake/AnswerConfig.cmake
"${CMAKE_CURRENT_BINARY_DIR}/Answer/AnswerConfigVersion.cmake"
DESTINATION
${ConfigPackageLocation}
COMPONENT
Devel
)