|
3 | 3 | # |
4 | 4 | # godot-cpp cmake arguments |
5 | 5 | # GODOT_GDEXTENSION_DIR: Path to the directory containing GDExtension interface header and API JSON file |
| 6 | +# GODOT_CPP_SYSTEM_HEADERS Mark the header files as SYSTEM. This may be useful to supress warnings in projects including this one. |
6 | 7 | # GODOT_CUSTOM_API_FILE: Path to a custom GDExtension API JSON file (takes precedence over `gdextension_dir`) |
7 | 8 | # FLOAT_PRECISION: Floating-point precision level ("single", "double") |
8 | 9 | # |
@@ -39,6 +40,7 @@ project(godot-cpp LANGUAGES CXX) |
39 | 40 | cmake_minimum_required(VERSION 3.12) |
40 | 41 |
|
41 | 42 | option(GENERATE_TEMPLATE_GET_NODE "Generate a template version of the Node class's get_node." ON) |
| 43 | +option(GODOT_CPP_SYSTEM_HEADERS "Expose headers as SYSTEM." OFF) |
42 | 44 |
|
43 | 45 | # Default build type is Debug in the SConstruct |
44 | 46 | if("${CMAKE_BUILD_TYPE}" STREQUAL "") |
@@ -169,11 +171,19 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") |
169 | 171 | target_compile_definitions(${PROJECT_NAME} PUBLIC TYPED_METHOD_BIND) |
170 | 172 | endif() |
171 | 173 |
|
172 | | -target_include_directories(${PROJECT_NAME} PUBLIC |
| 174 | +# Optionally mark headers as SYSTEM |
| 175 | +set(GODOT_CPP_SYSTEM_HEADERS_ATTRIBUTE "") |
| 176 | +if (GODOT_CPP_SYSTEM_HEADERS) |
| 177 | + set(GODOT_CPP_SYSTEM_HEADERS_ATTRIBUTE SYSTEM) |
| 178 | +endif () |
| 179 | + |
| 180 | +target_include_directories(${PROJECT_NAME} ${GODOT_CPP_SYSTEM_HEADERS_ATTRIBUTE} PUBLIC |
173 | 181 | include |
174 | 182 | ${CMAKE_CURRENT_BINARY_DIR}/gen/include |
175 | 183 | ) |
176 | 184 |
|
| 185 | +unset( GODOT_CPP_SYSTEM_HEADERS_ATTRIBUTE ) |
| 186 | + |
177 | 187 | # Put godot headers as SYSTEM PUBLIC to exclude warnings from irrelevant headers |
178 | 188 | target_include_directories(${PROJECT_NAME} |
179 | 189 | SYSTEM PUBLIC |
|
0 commit comments