Skip to content

Commit baca5f7

Browse files
authored
Merge branch 'master' into parsingMessage
2 parents e09a41c + 1cfa210 commit baca5f7

File tree

4 files changed

+67
-21
lines changed

4 files changed

+67
-21
lines changed

CMakeLists.txt

Lines changed: 45 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,22 @@
1-
cmake_minimum_required(VERSION 3.10)
1+
cmake_minimum_required(VERSION 3.23)
2+
# FILE_SET needs cmake 3.23
23

3-
project(dbc)
4+
project(dbc VERSION 0.1.1 DESCRIPTION "C++ DBC Parser")
5+
6+
# package
7+
set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
8+
set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
9+
set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
10+
set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE)
11+
set(CPACK_RESOURCE_FILE_README ${CMAKE_CURRENT_SOURCE_DIR}/README.md)
12+
include(CPack)
413

514
option(DEBUG "use debug flag" NO)
615
option(ENABLE_TESTS "Enable Unittests" ON)
716

17+
# defines variables used in the dbc.pc.in
18+
include(GNUInstallDirs)
19+
820
# specify the C++ standard
921
set(CMAKE_CXX_STANDARD 11)
1022
set(CMAKE_CXX_STANDARD_REQUIRED True)
@@ -24,14 +36,22 @@ endif()
2436

2537
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GCC_COVERAGE_COMPILE_FLAGS}")
2638

39+
add_subdirectory(third_party/bitstream)
40+
2741
# add where to find the source files
2842
# file(GLOB_RECURSE SOURCE ${PROJECT_SOURCE_DIR}/src/ *.cpp)
2943
list(APPEND SOURCE ${PROJECT_SOURCE_DIR}/src/utils.cpp
3044
${PROJECT_SOURCE_DIR}/src/message.cpp
3145
${PROJECT_SOURCE_DIR}/src/signal.cpp
3246
${PROJECT_SOURCE_DIR}/src/dbc.cpp)
3347

34-
add_subdirectory(third_party/bitstream)
48+
set(HEADER_FILES
49+
${PROJECT_SOURCE_DIR}/include/libdbc/dbc.hpp
50+
${PROJECT_SOURCE_DIR}/include/libdbc/message.hpp
51+
${PROJECT_SOURCE_DIR}/include/libdbc/signal.hpp
52+
${PROJECT_SOURCE_DIR}/include/libdbc/utils/utils.hpp
53+
${PROJECT_SOURCE_DIR}/include/libdbc/exceptions/error.hpp
54+
)
3555

3656
include_directories(src)
3757
include_directories(include)
@@ -45,8 +65,30 @@ add_subdirectory(doc)
4565

4666
add_library(${PROJECT_NAME} STATIC ${SOURCE})
4767
target_link_libraries(${PROJECT_NAME} bitstream)
68+
target_sources(${PROJECT_NAME} INTERFACE FILE_SET HEADERS
69+
TYPE HEADERS
70+
BASE_DIRS ${PROJECT_SOURCE_DIR}/include/libdbc
71+
FILES ${HEADER_FILES})
4872

4973
add_custom_target(release
5074
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
5175
COMMAND ${CMAKE_SOURCE_DIR}/scripts/create_single_header.sh
5276
DEPENDS ${PROJECT_NAME})
77+
78+
## Installation
79+
# install lib
80+
install(TARGETS ${PROJECT_NAME}
81+
DESTINATION ${CMAKE_INSTALL_LIBDIR})
82+
83+
# install headers
84+
install(TARGETS ${PROJECT_NAME}
85+
FILE_SET HEADERS
86+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lib${PROJECT_NAME}
87+
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
88+
)
89+
90+
# Generate pkg-config file
91+
configure_file(${PROJECT_NAME}.pc.in ${PROJECT_NAME}.pc @ONLY)
92+
install(
93+
FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc
94+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)

dbc.pc.in

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
prefix=@CMAKE_INSTALL_PREFIX@
2+
exec_prefix=${prefix}
3+
includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
4+
libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
5+
6+
Name: @PROJECT_NAME@
7+
Description: @CPACK_PACKAGE_DESCRIPTION_SUMMARY@
8+
Version: @CPACK_PACKAGE_VERSION@
9+
Cflags: -I${includedir}
10+
Libs: -L${libdir} -l@PROJECT_NAME@

include/libdbc/exceptions/error.hpp

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,34 +6,19 @@
66
namespace libdbc {
77

88
class exception : public std::exception {
9+
public:
910
const char * what() const throw() {
1011
return "libdbc exception occurred";
1112
}
1213
};
1314

1415
class validity_error : public exception {
16+
public:
1517
const char * what() const throw() {
16-
return "Invalid DBC file...";
18+
return "Invalid DBC file";
1719
}
1820
};
1921

20-
class header_error : public validity_error {
21-
header_error(const char* line, const char* expected, const char * file) :
22-
line(line), expected(expected), file(file) {}
23-
24-
const char * what() const throw() {
25-
std::ostringstream os;
26-
os << "Issue with the header line ( " << line << " ) in file ( ";
27-
os << file << " ). Expected to find: " << expected;
28-
return os.str().c_str();
29-
}
30-
31-
private:
32-
const char * line;
33-
const char * expected;
34-
const char * file;
35-
};
36-
3722
} // libdbc
3823

3924
#endif // __ERROR_HPP__

test/test_dbc.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,15 @@ TEST_CASE("Testing dbc file loading error issues", "[fileio][error]") {
3535
// very well standardized for now we ignore this type of error.
3636
CHECK_NOTHROW(parser->parse_file(MISSING_NEW_SYMBOLS_DBC_FILE));
3737
}
38+
39+
SECTION("Verify that what() method is accessible for all exceptions", "[error]")
40+
{
41+
auto generic_error = libdbc::exception();
42+
REQUIRE(generic_error.what() == "libdbc exception occurred");
43+
44+
auto validity_check = libdbc::validity_error();
45+
REQUIRE(validity_check.what() == "Invalid DBC file");
46+
}
3847
}
3948

4049
TEST_CASE("Testing dbc file loading", "[fileio]") {

0 commit comments

Comments
 (0)