From c56840f03cf139d60c6d90b55cf16e70f6ae2bc2 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Sun, 21 Jun 2015 00:15:04 +0200 Subject: o Going all header file based and single-executable to launch all apps. o Ading CMake magic to generate the launcher --- apps/CMakeLists.txt | 59 +++++++++++++++++++++++++++++++++++------------------ 1 file changed, 39 insertions(+), 20 deletions(-) (limited to 'apps/CMakeLists.txt') diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt index 988a989..c9eea9e 100644 --- a/apps/CMakeLists.txt +++ b/apps/CMakeLists.txt @@ -1,4 +1,3 @@ -list(APPEND APPS log4cplus-test) list(APPEND APPS ble-inspect-device) list(APPEND APPS sample-add-timestamp) list(APPEND APPS sample-convert) @@ -9,10 +8,6 @@ list(APPEND APPS sm-get-value) list(APPEND APPS sm-serial-read) list(APPEND APPS sm-serial-read-all) -add_library(trygvis-apps - SoilMoisture.cpp - apps.cpp) - # Boost find_package(Boost COMPONENTS regex system program_options REQUIRED) @@ -34,20 +29,44 @@ if(LOG4CPLUS_LIBRARIES MATCHES NOTFOUND) message(FATAL_ERROR "Could not find log4cplus library files") endif() -include_directories("${PROJECT_SOURCE_DIR}/include") -include_directories("${PROJECT_SOURCE_DIR}/json/src") -include_directories("${PROJECT_SOURCE_DIR}/sensor/include") -include_directories("${LOG4CPLUS_INCLUDE_DIRECTORIES}") +add_executable(generate generate.cpp) + +file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/generated) + +add_custom_command( + OUTPUT generated/apps-list.gen.h + COMMAND generate ${CMAKE_CURRENT_BINARY_DIR}/generated/apps-list.gen.h ${APPS} + DEPENDS generate ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt) + +foreach(app ${APPS}) + list(APPEND APPS_SOURCES ${app}.h) +endforeach() + +list(APPEND SOURCES ${CMAKE_CURRENT_BINARY_DIR}/generated/apps-list.gen.h) +list(APPEND SOURCES SoilMoisture.cpp SoilMoisture.h) +list(APPEND SOURCES apps.cpp apps.h) + +add_executable(launcher launcher.cpp + ${SOURCES} + ${APPS_SOURCES}) +target_include_directories(launcher + PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/generated + PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} + PUBLIC "${PROJECT_SOURCE_DIR}/include" + PUBLIC "${PROJECT_SOURCE_DIR}/json/src" + PUBLIC "${PROJECT_SOURCE_DIR}/sensor/include" + PUBLIC "${LOG4CPLUS_INCLUDE_DIRECTORIES}") + +target_link_libraries(launcher ble) +target_link_libraries(launcher trygvis-sensor) +target_link_libraries(launcher ${Boost_LIBRARIES}) +target_link_libraries(launcher ${BLUEZ_LIBRARIES}) +target_link_libraries(launcher ${PQXX_LIBRARIES}) +target_link_libraries(launcher ${LOG4CPLUS_LIBRARIES}) +target_link_libraries(launcher ${CMAKE_THREAD_LIBS_INIT}) foreach(app ${APPS}) - add_executable(${app} ${app}.cpp) - - target_link_libraries(${app} ble) - target_link_libraries(${app} trygvis-apps) - target_link_libraries(${app} trygvis-sensor) - target_link_libraries(${app} ${Boost_LIBRARIES}) - target_link_libraries(${app} ${BLUEZ_LIBRARIES}) - target_link_libraries(${app} ${PQXX_LIBRARIES}) - target_link_libraries(${app} ${LOG4CPLUS_LIBRARIES}) - target_link_libraries(${app} ${CMAKE_THREAD_LIBS_INIT}) -endforeach(app) + add_custom_command( + TARGET launcher POST_BUILD + COMMAND ln -sf launcher ${app}) +endforeach() -- cgit v1.2.3