From 261e47dc7220ef5ff184e6bd491d1426b39574f6 Mon Sep 17 00:00:00 2001 From: Martin Marmsoler Date: Wed, 4 Jan 2023 15:04:59 +0100 Subject: [PATCH 1/4] add needed pkg-config changes --- CMakeLists.txt | 19 ++++++++++++++++++- dbc.pc.in | 10 ++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 dbc.pc.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 8992cfc..d616c59 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,9 +1,20 @@ cmake_minimum_required(VERSION 3.10) -project(dbc) +project(dbc VERSION 0.1.1 DESCRIPTION "C++ DBC Parser") + +# package +set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) +set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR}) +set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH}) +set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE) +set(CPACK_RESOURCE_FILE_README ${CMAKE_CURRENT_SOURCE_DIR}/README.md) +include(CPack) option(DEBUG "use debug flag" NO) +# defines variables used in the dbc.pc.in +include(GNUInstallDirs) + # specify the C++ standard set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED True) @@ -40,3 +51,9 @@ add_custom_target(release WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND ${CMAKE_SOURCE_DIR}/scripts/create_single_header.sh DEPENDS ${PROJECT_NAME}) + +# Generate pkg-config file +configure_file(${PROJECT_NAME}.pc.in ${PROJECT_NAME}.pc @ONLY) +install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) diff --git a/dbc.pc.in b/dbc.pc.in new file mode 100644 index 0000000..b3cb36f --- /dev/null +++ b/dbc.pc.in @@ -0,0 +1,10 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=${prefix} +includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ +libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@ + +Name: @PROJECT_NAME@ +Description: @CPACK_PACKAGE_DESCRIPTION_SUMMARY@ +Version: @CPACK_PACKAGE_VERSION@ +Cflags: -I${includedir} +Libs: -L${libdir} -l@PROJECT_NAME@ From f9039af47c6d75743ebd2d714487ed50c0c1e8c7 Mon Sep 17 00:00:00 2001 From: Martin Marmsoler Date: Wed, 4 Jan 2023 16:58:12 +0100 Subject: [PATCH 2/4] install headers --- CMakeLists.txt | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d616c59..ef43637 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,5 @@ -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.23) +# FILE_SET needs cmake 3.23 project(dbc VERSION 0.1.1 DESCRIPTION "C++ DBC Parser") @@ -39,6 +40,14 @@ list(APPEND SOURCE ${PROJECT_SOURCE_DIR}/src/utils.cpp ${PROJECT_SOURCE_DIR}/src/signal.cpp ${PROJECT_SOURCE_DIR}/src/dbc.cpp) +set(HEADER_FILES + ${PROJECT_SOURCE_DIR}/include/libdbc/dbc.hpp + ${PROJECT_SOURCE_DIR}/include/libdbc/message.hpp + ${PROJECT_SOURCE_DIR}/include/libdbc/signal.hpp + ${PROJECT_SOURCE_DIR}/include/libdbc/utils/utils.hpp + ${PROJECT_SOURCE_DIR}/include/libdbc/exceptions/error.hpp +) + include_directories(src) include_directories(include) @@ -46,12 +55,28 @@ add_subdirectory(test) add_subdirectory(doc) add_library(${PROJECT_NAME} STATIC ${SOURCE}) +target_sources(${PROJECT_NAME} INTERFACE FILE_SET HEADERS + TYPE HEADERS + BASE_DIRS ${PROJECT_SOURCE_DIR}/include/libdbc + FILES ${HEADER_FILES}) add_custom_target(release WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND ${CMAKE_SOURCE_DIR}/scripts/create_single_header.sh DEPENDS ${PROJECT_NAME}) +## Installation +# install lib +install(TARGETS ${PROJECT_NAME} + DESTINATION ${CMAKE_INSTALL_LIBDIR}) + +# install headers +install(TARGETS ${PROJECT_NAME} + FILE_SET HEADERS + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lib${PROJECT_NAME} + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} +) + # Generate pkg-config file configure_file(${PROJECT_NAME}.pc.in ${PROJECT_NAME}.pc @ONLY) install( From 120ba2b46149ea6f8ea3b9f87adbd65d84e65de3 Mon Sep 17 00:00:00 2001 From: Martin Marmsoler Date: Fri, 6 Jan 2023 09:50:48 +0100 Subject: [PATCH 3/4] value can be negative example: SG_ Signal : 16|11@1+ (0.1,-102) [-102|102] "%" DEVICE --- src/dbc.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dbc.cpp b/src/dbc.cpp index c92cc3e..c1ea0f4 100644 --- a/src/dbc.cpp +++ b/src/dbc.cpp @@ -11,7 +11,7 @@ namespace libdbc { name_space_re("^(NS_)\\s\\:"), node_re("^(BU_:)\\s((?:[\\w]+?\\s?)*)"), message_re("^(BO_)\\s(\\d+)\\s(\\w+)\\:\\s(\\d+)\\s(\\w+|Vector__XXX)"), // NOTE: No multiplex support yet - signal_re("\\s(SG_)\\s(\\w+)\\s\\:\\s(\\d+)\\|(\\d+)\\@(\\d+)(\\+|\\-)\\s\\((\\d+\\.?(\\d+)?)\\,(\\d+\\.?(\\d+)?)\\)\\s\\[(-?\\d+\\.?(\\d+)?)\\|(-?\\d+\\.?(\\d+)?)\\]\\s\"(\\w*)\"\\s([\\w\\,]+|Vector__XXX)*") { + signal_re("\\s(SG_)\\s(\\w+)\\s\\:\\s(\\d+)\\|(\\d+)\\@(\\d+)(\\+|\\-)\\s\\((-?\\d+\\.?(\\d+)?)\\,(-?\\d+\\.?(\\d+)?)\\)\\s\\[(-?\\d+\\.?(\\d+)?)\\|(-?\\d+\\.?(\\d+)?)\\]\\s\"(\\w*)\"\\s([\\w\\,]+|Vector__XXX)*") { } From 076057bffe6e5da4748467d97fc7e353f93376c2 Mon Sep 17 00:00:00 2001 From: Martin Marmsoler Date: Fri, 6 Jan 2023 10:01:10 +0100 Subject: [PATCH 4/4] - signals can also contain special characters: SG_ Speed : 0|8@1+ (1,0) [0|204] "Km/h" DEVICE1,DEVICE2,DEVICE3 - multiple whitespaces at the end: SG_ TEMPERATURE : 48|16@1+ (0.01,-40) [-40|125] "C" DEVICE1,DEVICE2,DEVICE3 --- src/dbc.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dbc.cpp b/src/dbc.cpp index c1ea0f4..24bfad7 100644 --- a/src/dbc.cpp +++ b/src/dbc.cpp @@ -11,7 +11,7 @@ namespace libdbc { name_space_re("^(NS_)\\s\\:"), node_re("^(BU_:)\\s((?:[\\w]+?\\s?)*)"), message_re("^(BO_)\\s(\\d+)\\s(\\w+)\\:\\s(\\d+)\\s(\\w+|Vector__XXX)"), // NOTE: No multiplex support yet - signal_re("\\s(SG_)\\s(\\w+)\\s\\:\\s(\\d+)\\|(\\d+)\\@(\\d+)(\\+|\\-)\\s\\((-?\\d+\\.?(\\d+)?)\\,(-?\\d+\\.?(\\d+)?)\\)\\s\\[(-?\\d+\\.?(\\d+)?)\\|(-?\\d+\\.?(\\d+)?)\\]\\s\"(\\w*)\"\\s([\\w\\,]+|Vector__XXX)*") { + signal_re("\\s(SG_)\\s(\\w+)\\s\\:\\s(\\d+)\\|(\\d+)\\@(\\d+)(\\+|\\-)\\s\\((-?\\d+\\.?(\\d+)?)\\,(-?\\d+\\.?(\\d+)?)\\)\\s\\[(-?\\d+\\.?(\\d+)?)\\|(-?\\d+\\.?(\\d+)?)\\]\\s\"(.*)\"\\s+([\\w\\,]+|Vector__XXX)*") { }