cmake_minimum_required(VERSION 3.9.1) project(flippr-driver) set(CMAKE_BUILD_TYPE Debug) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") # enable C++11 standard add_definitions(-lcrypt) set(CMAKE_BINARY_DIR ${CMAKE_SOURCE_DIR}/bin) set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}) set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}) set(SOURCE_DIR ../src) set(LIB_DIR ${SOURCE_DIR}/lib) set(EASYLOGGING_INCLUDE_DIR ${LIB_DIR}/easylogging) add_library(Easylogging STATIC ${EASYLOGGING_INCLUDE_DIR}/easylogging++.cc) include_directories(${EASYLOGGING_INCLUDE_DIR}) add_library(libwiringPi SHARED IMPORTED ) set_property(TARGET libwiringPi PROPERTY IMPORTED_LOCATION ${LIB_DIR}/libwiringPi.so.2.44) #set_property(TARGET libwiringPi PROPERTY INTERFACE_INCLUDE_DIRECTORIES ../src/lib/wiringPi) find_package(Threads REQUIRED) find_package(Boost COMPONENTS system thread timer chrono REQUIRED) include_directories(${SOURCE_DIR}/input) include_directories(${SOURCE_DIR}/output) include_directories(${SOURCE_DIR}/lib) include_directories(${SOURCE_DIR}/utilities) include_directories(${Boost_INCLUDE_DIRS}) file(GLOB SOURCES ${SOURCE_DIR}/*/*.cpp) add_library(flippr_driver STATIC ${SOURCES}) target_link_libraries(flippr_driver ${CMAKE_THREAD_LIBS_INIT}) target_link_libraries(flippr_driver ${Boost_LIBRARIES}) target_link_libraries(flippr_driver libwiringPi) target_link_libraries(flippr_driver Easylogging) enable_testing(TRUE) #Prepare "Catch" library for other executables set(CATCH_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../src/tests) add_library(Catch INTERFACE) target_include_directories(Catch INTERFACE ${CATCH_INCLUDE_DIR}/*) #Make test executable set(TEST_SOURCES ${SOURCE_DIR}/../tests) include_directories(${TEST_SOURCES}) file(GLOB SOURCES ${TEST_SOURCES}/*/*.cpp) file(GLOB HEADER_SOURCES ${TEST_SOURCES}/*/*.hpp) add_executable(tests ${SOURCES} ${HEADER_SOURCES}) target_link_libraries(tests Easylogging) target_link_libraries(tests flippr_driver) target_link_libraries(tests Catch)