|
| 1 | +cmake_minimum_required(VERSION 3.5.1) |
| 2 | +project(aasdk CXX) |
| 3 | + |
| 4 | +set(base_directory ${CMAKE_CURRENT_SOURCE_DIR}) |
| 5 | +set(sources_directory ${base_directory}/src) |
| 6 | + |
| 7 | +set(include_directory ${base_directory}/include) |
| 8 | +set(include_ut_directory ${base_directory}/include_ut) |
| 9 | + |
| 10 | +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${base_directory}/lib) |
| 11 | +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${base_directory}/lib) |
| 12 | + |
| 13 | +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${base_directory}/bin) |
| 14 | +set(EXECUTABLE_OUTPUT_PATH ${base_directory}/bin) |
| 15 | + |
| 16 | +SET(CMAKE_CXX_STANDARD 14) |
| 17 | +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake_modules/") |
| 18 | +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_INIT} -fPIC -Wall -pedantic") |
| 19 | +set(CMAKE_CXX_FLAGS_DEBUG "-g -O0") |
| 20 | +set(CMAKE_CXX_FLAGS_RELEASE "-g -O3") |
| 21 | + |
| 22 | +set(Boost_USE_STATIC_LIBS OFF) |
| 23 | +set(Boost_USE_MULTITHREADED ON) |
| 24 | +set(Boost_USE_STATIC_RUNTIME OFF) |
| 25 | + |
| 26 | +add_definitions(-DBOOST_ALL_DYN_LINK) |
| 27 | + |
| 28 | +include(ExternalGtest) |
| 29 | +add_subdirectory(aasdk_proto) |
| 30 | + |
| 31 | +find_package(Boost REQUIRED COMPONENTS system log OPTIONAL_COMPONENTS unit_test_framework) |
| 32 | +find_package(libusb-1.0 REQUIRED) |
| 33 | +find_package(Protobuf REQUIRED) |
| 34 | + |
| 35 | +set(AASDK_PROTO_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}) |
| 36 | +set(AASDK_PROTO_LIBRARIES "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libaasdk_proto.a") |
| 37 | + |
| 38 | +include_directories(${AASDK_PROTO_INCLUDE_DIRS} |
| 39 | + ${Boost_INCLUDE_DIRS} |
| 40 | + ${LIBUSB_1_INCLUDE_DIRS} |
| 41 | + ${PROTOBUF_INCLUDE_DIR} |
| 42 | + ${GTEST_INCLUDE_DIRS} |
| 43 | + ${GMOCK_INCLUDE_DIRS} |
| 44 | + ${include_directory} |
| 45 | + ${include_ut_directory}) |
| 46 | + |
| 47 | +file(GLOB_RECURSE source_files ${sources_directory}/*.cpp) |
| 48 | +file(GLOB_RECURSE include_files ${include_directory}/*.hpp) |
| 49 | +file(GLOB_RECURSE tests_source_files ${sources_directory}/*.ut.cpp) |
| 50 | +file(GLOB_RECURSE tests_include_files ${include_ut_directory}/*.hpp) |
| 51 | + |
| 52 | +list(REMOVE_ITEM source_files ${tests_source_files}) |
| 53 | + |
| 54 | +add_library(aasdk SHARED |
| 55 | + ${source_files} |
| 56 | + ${include_files}) |
| 57 | + |
| 58 | +add_dependencies(aasdk aasdk_proto) |
| 59 | +target_link_libraries(aasdk |
| 60 | + ${AASDK_PROTO_LIBRARIES} |
| 61 | + ${Boost_LIBRARIES} |
| 62 | + ${LIBUSB_1_LIBRARIES} |
| 63 | + ${PROTOBUF_LIBRARIES} |
| 64 | + ssl |
| 65 | + crypto) |
| 66 | + |
| 67 | +add_executable(aasdk_ut EXCLUDE_FROM_ALL |
| 68 | + ${tests_source_files} |
| 69 | + ${tests_include_files}) |
| 70 | + |
| 71 | +add_dependencies(aasdk_ut aasdk) |
| 72 | +target_link_libraries(aasdk_ut |
| 73 | + aasdk |
| 74 | + ${GMOCK_LIBRARY_PATH} |
| 75 | + ${GTEST_LIBRARY_PATH}) |
| 76 | + |
| 77 | +if(CODE_COVERAGE) |
| 78 | + include(CodeCoverage) |
| 79 | + append_coverage_compiler_flags() |
| 80 | + setup_target_for_coverage(NAME aasdk_coverage EXECUTABLE aasdk_ut DEPENDENCIES aasdk_ut) |
| 81 | +endif(CODE_COVERAGE) |
0 commit comments