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 )
615
16+ # defines variables used in the dbc.pc.in
17+ include (GNUInstallDirs)
18+
719# specify the C++ standard
820set (CMAKE_CXX_STANDARD 11)
921set (CMAKE_CXX_STANDARD_REQUIRED True )
@@ -28,15 +40,45 @@ list(APPEND SOURCE ${PROJECT_SOURCE_DIR}/src/utils.cpp
2840 ${PROJECT_SOURCE_DIR} /src/signal.cpp
2941 ${PROJECT_SOURCE_DIR} /src/dbc.cpp)
3042
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+
3151include_directories (src)
3252include_directories (include )
3353
3454add_subdirectory (test )
3555add_subdirectory (doc )
3656
3757add_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} )
3862
3963add_custom_target (release
4064 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
4165 COMMAND ${CMAKE_SOURCE_DIR} /scripts/create_single_header.sh
4266 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