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
514option (DEBUG "use debug flag" NO )
615option (ENABLE_TESTS "Enable Unittests" ON )
716
17+ # defines variables used in the dbc.pc.in
18+ include (GNUInstallDirs)
19+
820# specify the C++ standard
921set (CMAKE_CXX_STANDARD 11)
1022set (CMAKE_CXX_STANDARD_REQUIRED True )
@@ -24,14 +36,22 @@ endif()
2436
2537set (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)
2943list (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
3656include_directories (src)
3757include_directories (include )
@@ -45,8 +65,30 @@ add_subdirectory(doc)
4565
4666add_library (${PROJECT_NAME} STATIC ${SOURCE} )
4767target_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
4973add_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)
0 commit comments