aboutsummaryrefslogtreecommitdiff
path: root/apps/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'apps/CMakeLists.txt')
-rw-r--r--apps/CMakeLists.txt59
1 files changed, 39 insertions, 20 deletions
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()