-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
41 lines (37 loc) · 1.4 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
cmake_minimum_required(VERSION 3.5)
project(cpp_example)
set(CUBAO_INCLUDE ${PROJECT_SOURCE_DIR}/headers/include)
include(${CUBAO_INCLUDE}/utils.cmake)
activate_common_configuration()
auto_build_type_and_compile_flags()
configure_output_directories()
configure_version_h()
include_directories(BEFORE ${CUBAO_INCLUDE})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -pthread")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror")
include_directories(BEFORE ${PROJECT_BINARY_DIR} ${PROJECT_SOURCE_DIR}/src)
set(HEADER_ROOT "${PROJECT_SOURCE_DIR}/src/${PROJECT_NAME}")
file(GLOB_RECURSE HEADERS src/**/*.hpp)
file(GLOB_RECURSE SOURCES src/**/*.cpp)
add_library(${PROJECT_NAME} ${SOURCES} ${HEADERS})
print_all_linked_libraries(${PROJECT_NAME})
install(
TARGETS ${PROJECT_NAME}
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
foreach(file ${HEADERS})
get_filename_component(dir ${file} DIRECTORY)
string(REGEX REPLACE "${HEADER_ROOT}" "" dir ${dir})
install(FILES ${file} DESTINATION "include/${PROJECT_NAME}/${dir}")
endforeach()
option(BUILD_TESTS "Build tests." ON)
if(BUILD_TESTS)
file(GLOB SRCS tests/test_*.cpp)
foreach(src ${SRCS})
string(REGEX REPLACE "(^.*/|.cpp$)" "" exe ${src})
add_executable(${exe} ${src})
target_link_libraries(${exe} ${PROJECT_NAME})
install(TARGETS ${exe} RUNTIME DESTINATION bin)
endforeach(src)
endif()