1# Copyright (c) Benjamin Kietzman (github.com/bkietz) 2# 3# Distributed under the Boost Software License, Version 1.0. (See accompanying 4# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 5 6set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH}) 7 8############### 9# CMake options 10cmake_minimum_required(VERSION 2.8) 11 12set(CMAKE_CXX_STANDARD 14) 13set(CMAKE_CXX_STANDARD_REQUIRED ON) 14 15option(HUNTER_ENABLED "Enable hunter package pulling" OFF) 16 17include("cmake/HunterGate.cmake") 18HunterGate( 19 URL "https://github.com/ruslo/hunter/archive/v0.18.64.tar.gz" 20 SHA1 "baf9c8cc4f65306f0e442b5419967b4c4c04589a" 21) 22 23project(boost-dbus CXX) 24 25############### 26# C++ options 27set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") 28include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include) 29include_directories(${CMAKE_CURRENT_SOURCE_DIR}/test) 30 31############### 32# import Boost 33add_definitions(-DBOOST_ERROR_CODE_HEADER_ONLY) 34add_definitions(-DBOOST_SYSTEM_NO_DEPRECATED) 35add_definitions(-DBOOST_ALL_NO_LIB) 36add_definitions(-DBOOST_NO_RTTI) 37add_definitions(-DBOOST_NO_TYPEID) 38hunter_add_package(Boost) 39find_package(Boost REQUIRED) 40 41include_directories(${Boost_INCLUDE_DIRS}) 42link_directories(${Boost_LIBRARY_DIRS}) 43 44############### 45# import D-Bus 46hunter_add_package(dbus) 47find_package(dbus REQUIRED) # Include functions provided by PkgConfig module. 48include_directories(${DBUS_INCLUDE_DIRS}) 49 50hunter_add_package(pthread-stubs) 51find_package (Threads) 52 53############## 54# Install 55add_library(boost-dbus INTERFACE) 56target_include_directories(boost-dbus INTERFACE 57 $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include> 58 $<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include> 59 ${DBUS_INCLUDE_DIRS}) 60 61target_link_libraries(boost-dbus INTERFACE ${DBUS_LIBRARIES}) 62install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/ DESTINATION include) 63 64############## 65# Tests 66enable_testing() 67 68add_executable(dbustests "test/avahi.cpp" "test/message.cpp" "test/error.cpp" "test/dbusPropertiesServer.cpp") 69 70############## 71# import GTest 72hunter_add_package(GTest) 73find_package(GTest REQUIRED) 74include_directories(${GTEST_INCLUDE_DIRS}) 75 76if (${HUNTER_ENABLED}) 77 find_package(GMock CONFIG REQUIRED) 78 target_link_libraries(dbustests GMock::main) 79else() 80 find_package(GMock REQUIRED) 81 target_link_libraries(dbustests ${GTEST_BOTH_LIBRARIES} gmock) 82endif() 83target_link_libraries(dbustests ${CMAKE_THREAD_LIBS_INIT}) 84add_test(dbustests dbustests "--gtest_output=xml:${test_name}.xml") 85 86target_link_libraries(dbustests boost-dbus) 87 88 89# export targets for find_package config mode 90export(TARGETS boost-dbus 91 FILE ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}Targets.cmake) 92 93file(WRITE 94 ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}Config.cmake 95 "include(\${CMAKE_CURRENT_LIST_DIR}/${CMAKE_PROJECT_NAME}Targets.cmake)\n") 96 97install(FILES 98 ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}Config.cmake 99 DESTINATION lib/cmake/${CMAKE_PROJECT_NAME}) 100 101install(TARGETS boost-dbus 102 EXPORT ${CMAKE_PROJECT_NAME}Targets 103 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} 104 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} 105 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) 106 107install(EXPORT ${CMAKE_PROJECT_NAME}Targets 108 DESTINATION lib/cmake/${CMAKE_PROJECT_NAME}) 109