From a217514592896e360e29381504c95f308da88889 Mon Sep 17 00:00:00 2001 From: Heiko Thiel Date: Fri, 10 May 2019 16:53:59 +0200 Subject: Added CMake support to generate a static library --- CMakeLists.txt | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 14 +++++++++-- makefile | 17 ------------- 3 files changed, 90 insertions(+), 19 deletions(-) create mode 100644 CMakeLists.txt delete mode 100644 makefile diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..05eb9f2 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,78 @@ +cmake_minimum_required(VERSION 3.1) +project(NemaTode VERSION 1.1) + +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + +set(CMAKE_RELEASE_POSTFIX "" CACHE STRING "Add postfix to target for Release build.") +set(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "Add postfix to target for Debug build.") +set(CMAKE_RELWITHDEBINFO_POSTFIX "rd" CACHE STRING "Add postfix to target for RelWithDebInfo build.") +set(CMAKE_MINSIZEREL_POSTFIX "s" CACHE STRING "Add postfix to target for MinSizeRel build") + +set(headers + include/nmeaparse/Event.h + include/nmeaparse/GPSFix.h + include/nmeaparse/GPSService.h + include/nmeaparse/nmea.h + include/nmeaparse/NMEACommand.h + include/nmeaparse/NMEAParser.h + include/nmeaparse/NumberConversion.h +) + +set(sources + src/GPSFix.cpp + src/GPSService.cpp + src/NMEACommand.cpp + src/NMEAParser.cpp + src/NumberConversion.cpp +) + +add_library(${PROJECT_NAME} STATIC ${headers} ${sources}) + +set_target_properties(${PROJECT_NAME} PROPERTIES + VERSION ${PROJECT_VERSION} + SOVERSION 1 +) + +target_include_directories(${PROJECT_NAME} PUBLIC + $ + $ +) + +include(GNUInstallDirs) +set(INSTALL_CONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake) + +install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + +# We have no other dependencies, so we export direct to NemaTodeConfig +# instead of using write_basic_package_version_file to generate a helper file +install(TARGETS ${PROJECT_NAME} + EXPORT NemaTodeConfig + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + PUBLIC_HEADER DESTINATION include +) + +install(EXPORT NemaTodeConfig + DESTINATION ${INSTALL_CONFIGDIR} + NAMESPACE ${PROJECT_NAME}:: +) + +include(CMakePackageConfigHelpers) +write_basic_package_version_file( + ${CMAKE_CURRENT_BINARY_DIR}/NemaTodeVersion.cmake + COMPATIBILITY SameMajorVersion +) +install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/NemaTodeVersion.cmake + DESTINATION ${INSTALL_CONFIGDIR} +) + +# build demo_advanced +add_executable(demo_advanced demo_advanced.cpp) +target_link_libraries(demo_advanced ${PROJECT_NAME}) + +# build demo_simple +add_executable(demo_simple demo_simple.cpp) +target_link_libraries(demo_simple ${PROJECT_NAME}) \ No newline at end of file diff --git a/README.md b/README.md index 2fd5e1e..58f3d82 100644 --- a/README.md +++ b/README.md @@ -116,8 +116,6 @@ There are 2 ways to operate... * Sentence Generation * Custom Sentence handling -. - **Generation** NMEACommand mycmd; @@ -133,6 +131,18 @@ There are 2 included NMEACommands that can configure a GPS. * ```` PSRF100```` Configures the UART serial connection (if the chip has one). +## Include NemaTode in your project +You can include NemaTode via [CMake](https://cmake.org) in our project. +Your basic CMakeLists.txt file could look like: + + cmake_minimum_required(VERSION 3.1) + project(MyProject) + + find_package(NemaTode REQUIRED CONFIG) + + add_executable(${PROJECT_NAME} mycode.cpp) + + target_link_libraries(${PROJECT_NAME} NemaTode::NemaTode) ## GPS Fix data available diff --git a/makefile b/makefile deleted file mode 100644 index 91d5cf7..0000000 --- a/makefile +++ /dev/null @@ -1,17 +0,0 @@ -# Simple makefile for the demos in the top level directory. - -.PHONY: advanced simple - -all: simple advanced - @echo "Done!" - -advanced: - g++ -std=c++11 -Iinclude src/*.cpp demo_advanced.cpp -o advanced - - -simple: - g++ -std=c++11 -Iinclude src/*.cpp demo_simple.cpp -o simple - -clean: - rm -f simple - rm -f advanced -- cgit v1.2.3