|
1 |
| -cmake_minimum_required(VERSION 3.4) |
| 1 | +cmake_minimum_required(VERSION 3.4...3.28) |
2 | 2 | enable_testing()
|
3 | 3 |
|
4 |
| -project(cppparser) |
| 4 | +project(cppparser VERSION 1.0.0) |
5 | 5 |
|
6 | 6 | set(CMAKE_CXX_STANDARD 17)
|
7 | 7 | set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
8 | 8 | set(CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES ${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES})
|
9 | 9 | set(CLANG_TIDY_COMMAND "clang-tidy" "--config-file=${CMAKE_CURRENT_SOURCE_DIR}/.clang-tidy")
|
| 10 | +set(export_config_name ${PROJECT_NAME}) |
10 | 11 |
|
11 | 12 | if(MSVC)
|
12 | 13 | SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd\"4996\"")
|
@@ -36,3 +37,61 @@ if(NOT ${MARKDOWN_PP} MATCHES "MARKDOWN_PP-NOTFOUND")
|
36 | 37 | else()
|
37 | 38 | message("Markdown-pp NOT FOUND: README cannot be updated.")
|
38 | 39 | endif()
|
| 40 | + |
| 41 | +install( |
| 42 | + TARGETS cppast cppparser_lex_and_yacc cppparser cppwriter |
| 43 | + EXPORT ${export_config_name}Targets |
| 44 | + ARCHIVE DESTINATION "lib" COMPONENT Development |
| 45 | + LIBRARY DESTINATION "lib" COMPONENT RuntimeLibraries |
| 46 | + LIBRARY DESTINATION "bin" COMPONENT RuntimeLibraries |
| 47 | +) |
| 48 | + |
| 49 | +if(NOT DEFINED CPPPARSER_INSTALL_CONFIG_DIR) |
| 50 | + set(CPPPARSER_INSTALL_CONFIG_DIR lib/cmake/${export_config_name}) |
| 51 | +endif() |
| 52 | + |
| 53 | +#------------------------------------------------------------------------------ |
| 54 | +# Configure <export_config_name>ConfigVersion.cmake common to build and install tree |
| 55 | +include(CMakePackageConfigHelpers) |
| 56 | +set(config_version_file ${PROJECT_BINARY_DIR}/${export_config_name}ConfigVersion.cmake) |
| 57 | +write_basic_package_version_file( |
| 58 | + ${config_version_file} |
| 59 | + VERSION "${CPPPARSER_VERSION}" |
| 60 | + COMPATIBILITY ExactVersion |
| 61 | +) |
| 62 | + |
| 63 | +#------------------------------------------------------------------------------ |
| 64 | +# Export '<export_config_name>Targets.cmake' for a build tree |
| 65 | +export( |
| 66 | + EXPORT ${PROJECT_NAME}Targets |
| 67 | + FILE "${CMAKE_CURRENT_BINARY_DIR}/${export_config_name}Targets.cmake" |
| 68 | +) |
| 69 | + |
| 70 | +# Configure '<export_config_name>Config.cmake' for a build tree |
| 71 | +set(build_config ${CMAKE_BINARY_DIR}/${export_config_name}Config.cmake) |
| 72 | +configure_package_config_file( |
| 73 | + ${export_config_name}Config.cmake.in |
| 74 | + ${build_config} |
| 75 | + INSTALL_DESTINATION "${PROJECT_BINARY_DIR}" |
| 76 | +) |
| 77 | + |
| 78 | +#------------------------------------------------------------------------------ |
| 79 | +# Export '<export_config_name>Targets.cmake' for an install tree |
| 80 | +install( |
| 81 | + EXPORT ${export_config_name}Targets |
| 82 | + FILE ${export_config_name}Targets.cmake |
| 83 | + DESTINATION ${CPPPARSER_INSTALL_CONFIG_DIR} |
| 84 | +) |
| 85 | + |
| 86 | +set(install_config ${PROJECT_BINARY_DIR}/CMakeFiles/${export_config_name}Config.cmake) |
| 87 | +configure_package_config_file( |
| 88 | + ${export_config_name}Config.cmake.in |
| 89 | + ${install_config} |
| 90 | + INSTALL_DESTINATION ${CPPPARSER_INSTALL_CONFIG_DIR} |
| 91 | +) |
| 92 | + |
| 93 | +# Install config files |
| 94 | +install( |
| 95 | + FILES ${config_version_file} ${install_config} |
| 96 | + DESTINATION "${CPPPARSER_INSTALL_CONFIG_DIR}" |
| 97 | +) |
0 commit comments