summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorckgt <ckarlsson25@gmail.com>2019-05-20 01:48:41 -0400
committerGitHub <noreply@github.com>2019-05-20 01:48:41 -0400
commit5ce6ddf1cd7d219045a15133dd22068ad4501dcf (patch)
tree606df3ee811c5512c489484c6327e75e23b7a62a
parentaf1651176e142d10b113d2fc322076917414db3c (diff)
parenta217514592896e360e29381504c95f308da88889 (diff)
Merge pull request #9 from SunBlack/CMake_support
WIP: Added CMake support to generate a static library
-rw-r--r--CMakeLists.txt78
-rw-r--r--README.md14
-rw-r--r--makefile17
3 files changed, 90 insertions, 19 deletions
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
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+ $<INSTALL_INTERFACE:include>
+)
+
+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