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