#### Find all packages function(find_header_and_lib PREFIX HEADER_NAME LIBRARY_NAME) # message(STATUS "=== PREFIX ===") # message(STATUS "PREFIX=${PREFIX}") # message(STATUS "HEADER_NAME=${HEADER_NAME}") # message(STATUS "LIBRARY_NAME=${LIBRARY_NAME}") find_path(${PREFIX}_INCLUDE_DIRECTORY ${HEADER_NAME}) if(${${PREFIX}_INCLUDE_DIRECTORY} MATCHES NOTFOUND) message(STATUS "Could not find header file: " ${HEADER_NAME}) endif() find_library(${PREFIX}_LIBRARY ${LIBRARY_NAME}) if(${${PREFIX}_LIBRARY} MATCHES NOTFOUND) message(STATUS "Could not find library: " ${LIBRARY_NAME}) endif() if(${${PREFIX}_INCLUDE_DIRECTORY} MATCHES NOTFOUND OR ${${PREFIX}_LIBRARY} MATCHES NOTFOUND) set(${PREFIX}_OK NOTFOUND PARENT_SCOPE) else() set(${PREFIX}_INCLUDE_DIRECTORY ${${PREFIX}_INCLUDE_DIRECTORY} PARENT_SCOPE) set(${PREFIX}_LIBRARY ${${PREFIX}_LIBRARY} PARENT_SCOPE) set(${PREFIX}_OK OK PARENT_SCOPE) endif() endfunction() # Boost find_package(Boost COMPONENTS regex system program_options REQUIRED QUIET) # Bluez pkg_check_modules(BLUEZ bluez REQUIRED) # pthreads find_package(Threads REQUIRED) # libpqxx pkg_check_modules(PQXX libpqxx REQUIRED) # log4cplus find_header_and_lib(LOG4CPLUS log4cplus/logger.h log4cplus) if(NOT LOG4CPLUS_OK STREQUAL "OK") message(STATUS "Not adding MQTT applications, missing header and/or library files") endif() list(APPEND INCLUDE_DIRECTORIES "${LOG4CPLUS_INCLUDE_DIRECTORY}") list(APPEND LIBRARIES "${LOG4CPLUS_LIBRARY}") # mosquitto find_header_and_lib(MOSQUITTO mosquitto.h mosquitto) if(MOSQUITTO_OK STREQUAL "OK") list(APPEND INCLUDE_DIRECTORIES "${MOSQUITTO_INCLUDE_DIRECTORY}") list(APPEND LIBRARIES "${MOSQUITTO_LIBRARY}") else() message(STATUS "Not adding MQTT applications, missing header and/or library files") endif() message(STATUS "Dependency summary:") message(STATUS "Log4cplus: -I${LOG4CPLUS_INCLUDE_DIRECTORY}, -L${LOG4CPLUS_LIBRARY}") message(STATUS "Mosquitto: -I${MOSQUITTO_INCLUDE_DIRECTORY}, -L${MOSQUITTO_LIBRARY}") add_library(apps OBJECT apps.cpp apps.h SoilMoisture.cpp SoilMoisture.h diller_util.cpp diller_util.h) target_include_directories(apps PUBLIC "${PROJECT_SOURCE_DIR}/include" "${PROJECT_SOURCE_DIR}/json/src" ) function(add_app) cmake_parse_arguments(ADD_APP "" "NAME" "EXTRA" ${ARGN}) set(app "${ADD_APP_NAME}") add_executable(${app} ${app}.cpp $ "${ADD_APP_EXTRA}") target_include_directories(${app} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${PROJECT_SOURCE_DIR}/include" "${PROJECT_SOURCE_DIR}/json/src" "${PROJECT_SOURCE_DIR}/gsl/include" "${PROJECT_SOURCE_DIR}/sensor/include" ) target_link_libraries(${app} ble trygvis-sensor ${LIBRARIES} ${Boost_LIBRARIES} ${BLUEZ_LIBRARIES} ${PQXX_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ) install(TARGETS ${app} RUNTIME DESTINATION bin) endfunction() add_app(NAME ble-bts) add_app(NAME ble-inspect-device) add_app(NAME ble-read-characteristic) add_app(NAME ble-scan) add_app(NAME sample-add-timestamp) add_app(NAME sample-convert) add_app(NAME sample-select) add_app(NAME sample-tee) add_app(NAME sm-db-insert) add_app(NAME sm-db-select) add_app(NAME sm-get-value) add_app(NAME sm-serial-read) add_app(NAME sm-serial-read-all) if(MOSQUITTO_OK STREQUAL "OK") set(MQTT_SOURCES mqtt_support.cpp mqtt_support.h) add_app(NAME mqtt-publish EXTRA "${MQTT_SOURCES}") add_app(NAME sm-diller EXTRA "${MQTT_SOURCES}") endif()