-
Notifications
You must be signed in to change notification settings - Fork 38
/
Copy pathCMakeLists.txt
97 lines (83 loc) · 3.08 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
cmake_minimum_required(VERSION 3.4)
enable_testing()
project(cppparser VERSION 1.0.0)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES ${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES})
set(CLANG_TIDY_COMMAND "clang-tidy" "--config-file=${CMAKE_CURRENT_SOURCE_DIR}/.clang-tidy")
set(export_config_name ${PROJECT_NAME})
if(MSVC)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd\"4996\"")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd\"4996\"")
endif()
add_subdirectory(cppast)
add_subdirectory(cppparser)
add_subdirectory(cppwriter)
find_program(
MARKDOWN_PP
"markdown-pp"
PATHS ENV PATH
)
if(NOT ${MARKDOWN_PP} MATCHES "MARKDOWN_PP-NOTFOUND")
add_custom_command(
OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/README.md
COMMAND ${MARKDOWN_PP} ${CMAKE_CURRENT_SOURCE_DIR}/cppparser/src/README.mdpp -o ${CMAKE_CURRENT_SOURCE_DIR}/README.md
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/cppparser/src/README.mdpp ${RESPATHS} ${EXAMPLE_HEADERS}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
add_custom_target(
ReadMe ALL
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/README.md)
else()
message("Markdown-pp NOT FOUND: README cannot be updated.")
endif()
install(
TARGETS cppast cppparser_lex_and_yacc cppparser cppwriter
EXPORT ${export_config_name}Targets
ARCHIVE DESTINATION "lib" COMPONENT Development
LIBRARY DESTINATION "lib" COMPONENT RuntimeLibraries
LIBRARY DESTINATION "bin" COMPONENT RuntimeLibraries
)
if(NOT DEFINED CPPPARSER_INSTALL_CONFIG_DIR)
set(CPPPARSER_INSTALL_CONFIG_DIR lib/cmake/${export_config_name})
endif()
#------------------------------------------------------------------------------
# Configure <export_config_name>ConfigVersion.cmake common to build and install tree
include(CMakePackageConfigHelpers)
set(config_version_file ${PROJECT_BINARY_DIR}/${export_config_name}ConfigVersion.cmake)
write_basic_package_version_file(
${config_version_file}
VERSION "${CPPPARSER_VERSION}"
COMPATIBILITY ExactVersion
)
#------------------------------------------------------------------------------
# Export '<export_config_name>Targets.cmake' for a build tree
export(
EXPORT ${PROJECT_NAME}Targets
FILE "${CMAKE_CURRENT_BINARY_DIR}/${export_config_name}Targets.cmake"
)
# Configure '<export_config_name>Config.cmake' for a build tree
set(build_config ${CMAKE_BINARY_DIR}/${export_config_name}Config.cmake)
configure_package_config_file(
${export_config_name}Config.cmake.in
${build_config}
INSTALL_DESTINATION "${PROJECT_BINARY_DIR}"
)
#------------------------------------------------------------------------------
# Export '<export_config_name>Targets.cmake' for an install tree
install(
EXPORT ${export_config_name}Targets
FILE ${export_config_name}Targets.cmake
DESTINATION ${CPPPARSER_INSTALL_CONFIG_DIR}
)
set(install_config ${PROJECT_BINARY_DIR}/CMakeFiles/${export_config_name}Config.cmake)
configure_package_config_file(
${export_config_name}Config.cmake.in
${install_config}
INSTALL_DESTINATION ${CPPPARSER_INSTALL_CONFIG_DIR}
)
# Install config files
install(
FILES ${config_version_file} ${install_config}
DESTINATION "${CPPPARSER_INSTALL_CONFIG_DIR}"
)