1
1
cmake_minimum_required (VERSION 3.16 )
2
2
3
- project (dbc VERSION 0.1.1 DESCRIPTION "C++ DBC Parser" )
3
+ project (dbc
4
+ VERSION 0.2.0
5
+ DESCRIPTION "C++ DBC Parser"
6
+ )
7
+
8
+ # -- PROJECT OPTIONS -- #
9
+ option (DBC_ENABLE_TESTS "Enable Unittests" ON )
10
+ option (DBC_TEST_LOCALE_INDEPENDENCE "Used to deterime if the libary is locale agnostic when it comes to converting floats. You need `de_DE.UTF-8` locale installed for this testing." OFF )
11
+ option (DBC_GENERATE_DOCS "Use doxygen if installed to generated documentation files" OFF )
12
+ # ---------------------- #
4
13
5
14
set (CMAKE_EXPORT_COMPILE_COMMANDS ON )
6
15
@@ -12,14 +21,6 @@ set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE)
12
21
set (CPACK_RESOURCE_FILE_README ${CMAKE_CURRENT_SOURCE_DIR} /README.md )
13
22
include (CPack )
14
23
15
- option (DEBUG "use debug flag" NO )
16
- option (ENABLE_TESTS "Enable Unittests" ON )
17
- # Turn OFF, if you are using FetchContent to include it to your project
18
- option (FETCH_CONTENT_INCLUSION "Include project with FetchContent_Declare in another project. In this case the headers and the cmake files are not needed, only the library" OFF )
19
-
20
- # defines variables used in the dbc.pc.in
21
- include (GNUInstallDirs )
22
-
23
24
# specify the C++ standard
24
25
set (CMAKE_CXX_STANDARD 11 )
25
26
set (CMAKE_CXX_STANDARD_REQUIRED True )
@@ -37,80 +38,78 @@ if (NOT ${FastFloat_FOUND})
37
38
add_subdirectory (${fastfloat_SOURCE_DIR} ${fastfloat_BINARY_DIR} EXCLUDE_FROM_ALL )
38
39
endif ()
39
40
40
- set (GCC_COMPILE_FLAGS "-Wextra -Wall -Wfloat-equal -Wundef -Wshadow \
41
- -Wpointer-arith -Wcast-align -Wstrict-prototypes -Wwrite-strings \
42
- -Waggregate-return -Wcast-qual -Wswitch-default -Wswitch-enum -Wconversion \
43
- -Wunreachable-code -Wformat=2 -Werror -Wuninitialized -Winit-self" )
44
-
45
- if (DEBUG )
46
- set (GCC_COMPILE_FLAGS ${GCC_COMPILE_FLAGS} " -g" )
47
- else ()
48
- set (GCC_COMPILE_FLAGS ${GCC_COMPILE_FLAGS} " -O2" )
49
- endif ()
50
-
51
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GCC_COVERAGE_COMPILE_FLAGS} " )
52
-
53
41
# add where to find the source files
54
- # file(GLOB_RECURSE SOURCE ${PROJECT_SOURCE_DIR}/src/ *.cpp)
55
- list (APPEND SOURCE ${PROJECT_SOURCE_DIR} /src/utils.cpp
56
- ${PROJECT_SOURCE_DIR} /src/message.cpp
57
- ${PROJECT_SOURCE_DIR} /src/signal.cpp
58
- ${PROJECT_SOURCE_DIR} /src/dbc.cpp )
42
+ list (APPEND SOURCE_FILES
43
+ ${PROJECT_SOURCE_DIR} /src/utils.cpp
44
+ ${PROJECT_SOURCE_DIR} /src/message.cpp
45
+ ${PROJECT_SOURCE_DIR} /src/signal.cpp
46
+ ${PROJECT_SOURCE_DIR} /src/dbc.cpp
47
+ )
59
48
60
- set ( HEADER_FILES
49
+ list ( APPEND HEADER_FILES
61
50
${PROJECT_SOURCE_DIR} /include/libdbc/dbc.hpp
62
51
${PROJECT_SOURCE_DIR} /include/libdbc/message.hpp
63
52
${PROJECT_SOURCE_DIR} /include/libdbc/signal.hpp
64
53
${PROJECT_SOURCE_DIR} /include/libdbc/utils/utils.hpp
65
54
${PROJECT_SOURCE_DIR} /include/libdbc/exceptions/error.hpp
66
55
)
67
56
68
- include_directories (src )
69
- include_directories (include )
70
-
71
- if (ENABLE_TESTS )
57
+ if (DBC_ENABLE_TESTS )
72
58
include (CTest )
73
59
add_subdirectory (test )
74
60
endif ()
75
61
76
- add_subdirectory (doc )
62
+ if (DBC_GENERATE_DOCS )
63
+ add_subdirectory (doc )
64
+ endif ()
65
+
66
+ list (APPEND GCC_CLANG_COMPILE_FLAGS
67
+ -Wall -Wextra -Wpedantic
68
+ -Wconversion -Wint-in-bool-context
69
+ -Wmissing-declarations -Wmissing-field-initializers
70
+ -Werror
71
+ )
77
72
78
- add_library (${PROJECT_NAME} STATIC ${SOURCE} )
79
- target_link_libraries (${PROJECT_NAME} FastFloat::fast_float )
80
73
81
- if (${CMAKE_MINOR_VERSION} GREATER_EQUAL 23 )
82
- target_sources (${PROJECT_NAME} INTERFACE FILE_SET HEADERS
83
- TYPE HEADERS
84
- BASE_DIRS ${PROJECT_SOURCE_DIR} /include/libdbc
85
- FILES ${HEADER_FILES} )
74
+ if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC" )
75
+ add_compile_options (/W4 /WX )
76
+ elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
77
+ # Clang shadow warnings aren't as sensitive as gcc
78
+ add_compile_options (${GCC_CLANG_COMPILE_FLAGS} -Wshadow )
79
+ else ()
80
+ add_compile_options (${GCC_CLANG_COMPILE_FLAGS} )
86
81
endif ()
87
82
83
+ add_library (${PROJECT_NAME} STATIC ${SOURCE_FILES} )
84
+ target_link_libraries (${PROJECT_NAME} FastFloat::fast_float )
85
+ target_include_directories (${PROJECT_NAME} PUBLIC
86
+ $< BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include>
87
+ $< INSTALL_INTERFACE:include>
88
+ )
89
+ target_compile_features (${PROJECT_NAME} PRIVATE cxx_std_11 )
90
+
91
+ target_sources (${PROJECT_NAME} INTERFACE FILE_SET HEADERS
92
+ TYPE HEADERS
93
+ BASE_DIRS ${PROJECT_SOURCE_DIR} /include/libdbc
94
+ FILES ${HEADER_FILES}
95
+ )
96
+
88
97
add_custom_target (release
89
98
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
90
99
COMMAND ${CMAKE_SOURCE_DIR} /scripts/create_single_header.sh
91
- DEPENDS ${PROJECT_NAME} )
100
+ DEPENDS ${PROJECT_NAME}
101
+ )
92
102
93
103
## Installation
94
104
# install lib
95
105
install (TARGETS ${PROJECT_NAME}
96
106
DESTINATION ${CMAKE_INSTALL_LIBDIR} )
97
107
98
108
# install headers
99
- if (${CMAKE_MINOR_VERSION} GREATER_EQUAL 23 AND NOT FETCH_CONTENT_INCLUSION )
100
- install (TARGETS ${PROJECT_NAME}
101
- FILE_SET HEADERS
102
- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /lib${PROJECT_NAME}
103
- INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
104
- )
105
- elseif (NOT FETCH_CONTENT_INCLUSION )
106
- install (DIRECTORY ${PROJECT_SOURCE_DIR} /include/libdbc DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} )
107
- endif ()
108
-
109
+ install (DIRECTORY ${PROJECT_SOURCE_DIR} /include/libdbc DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} )
109
110
110
- if (NOT FETCH_CONTENT_INCLUSION )
111
- # Generate pkg-config file
112
- configure_file (${PROJECT_NAME} .pc.in ${PROJECT_NAME} .pc @ONLY )
113
- install (
114
- FILES ${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME}.pc
115
- DESTINATION ${CMAKE_INSTALL_LIBDIR} /pkgconfig )
116
- endif ()
111
+ # Generate pkg-config file
112
+ configure_file (${PROJECT_NAME} .pc.in ${PROJECT_NAME} .pc @ONLY )
113
+ install (
114
+ FILES ${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME}.pc
115
+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /pkgconfig )
0 commit comments