forked from techtim/mdnsServicepp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
40 lines (30 loc) · 1.39 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
set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
cmake_minimum_required(VERSION 3.8 FATAL_ERROR)
project(mdnsServicepp VERSION 0.0.1)
set(CMAKE_CXX_STANDARD_REQUIRED YES)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_EXTENSIONS NO)
set(CMAKE_C_STANDARD 11)
option(MDNSSERVICE_BUILD_EXAMPLE "Build example" OFF)
option(UNDEFINED_SANITIZER "Enable Clang UndefinedBehaviorSanitizer" OFF)
option(ADDRESS_SANITIZER "Enable Clang AddressSanitizer" OFF)
set(CMAKE_THREAD_LIBS_INIT "-lpthread")
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
set(THREADS_PREFER_PTHREAD_FLAG TRUE)
find_package(Threads REQUIRED)
if (ADDRESS_SANITIZER AND ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
message("!! AddressSanitizer enabled for debug build")
set(CMAKE_CXX_FLAGS_DEBUG
"${CMAKE_CXX_FLAGS_DEBUG} -O1 -fno-omit-frame-pointer -fsanitize=address")
endif ()
if (UNDEFINED_SANITIZER AND ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
message("!! UndefinedBehaviorSanitizer enabled for debug build")
set(CMAKE_CXX_FLAGS_DEBUG
"${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=undefined")
endif ()
if (MDNSSERVICE_BUILD_EXAMPLE)
add_executable(${PROJECT_NAME}_example example.cpp)
target_include_directories(${PROJECT_NAME}_example INTERFACE ${CMAKE_SOURCE_DIR})
target_compile_options(${PROJECT_NAME}_example PUBLIC -Wall -Wextra -pedantic)
target_link_libraries(${PROJECT_NAME}_example PRIVATE Threads::Threads)
endif ()