1
- cmake_minimum_required (VERSION 3.10 )
1
+ cmake_minimum_required (VERSION 3.23 )
2
+ # FILE_SET needs cmake 3.23
2
3
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 )
4
13
5
14
option (DEBUG "use debug flag" NO )
6
15
16
+ # defines variables used in the dbc.pc.in
17
+ include (GNUInstallDirs )
18
+
7
19
# specify the C++ standard
8
20
set (CMAKE_CXX_STANDARD 11 )
9
21
set (CMAKE_CXX_STANDARD_REQUIRED True )
@@ -28,15 +40,45 @@ list(APPEND SOURCE ${PROJECT_SOURCE_DIR}/src/utils.cpp
28
40
${PROJECT_SOURCE_DIR} /src/signal.cpp
29
41
${PROJECT_SOURCE_DIR} /src/dbc.cpp )
30
42
43
+ set (HEADER_FILES
44
+ ${PROJECT_SOURCE_DIR} /include/libdbc/dbc.hpp
45
+ ${PROJECT_SOURCE_DIR} /include/libdbc/message.hpp
46
+ ${PROJECT_SOURCE_DIR} /include/libdbc/signal.hpp
47
+ ${PROJECT_SOURCE_DIR} /include/libdbc/utils/utils.hpp
48
+ ${PROJECT_SOURCE_DIR} /include/libdbc/exceptions/error.hpp
49
+ )
50
+
31
51
include_directories (src )
32
52
include_directories (include )
33
53
34
54
add_subdirectory (test )
35
55
add_subdirectory (doc )
36
56
37
57
add_library (${PROJECT_NAME} STATIC ${SOURCE} )
58
+ target_sources (${PROJECT_NAME} INTERFACE FILE_SET HEADERS
59
+ TYPE HEADERS
60
+ BASE_DIRS ${PROJECT_SOURCE_DIR} /include/libdbc
61
+ FILES ${HEADER_FILES} )
38
62
39
63
add_custom_target (release
40
64
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
41
65
COMMAND ${CMAKE_SOURCE_DIR} /scripts/create_single_header.sh
42
66
DEPENDS ${PROJECT_NAME} )
67
+
68
+ ## Installation
69
+ # install lib
70
+ install (TARGETS ${PROJECT_NAME}
71
+ DESTINATION ${CMAKE_INSTALL_LIBDIR} )
72
+
73
+ # install headers
74
+ install (TARGETS ${PROJECT_NAME}
75
+ FILE_SET HEADERS
76
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /lib${PROJECT_NAME}
77
+ INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
78
+ )
79
+
80
+ # Generate pkg-config file
81
+ configure_file (${PROJECT_NAME} .pc.in ${PROJECT_NAME} .pc @ONLY )
82
+ install (
83
+ FILES ${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME}.pc
84
+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /pkgconfig )
0 commit comments