diff --git a/CMakeLists.txt b/CMakeLists.txt index 9f892705..2350463d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,6 +3,7 @@ # # godot-cpp cmake arguments # GODOT_GDEXTENSION_DIR: Path to the directory containing GDExtension interface header and API JSON file +# GODOT_CPP_SYSTEM_HEADERS Mark the header files as SYSTEM. This may be useful to supress warnings in projects including this one. # GODOT_CUSTOM_API_FILE: Path to a custom GDExtension API JSON file (takes precedence over `gdextension_dir`) # FLOAT_PRECISION: Floating-point precision level ("single", "double") # @@ -39,6 +40,7 @@ project(godot-cpp LANGUAGES CXX) cmake_minimum_required(VERSION 3.12) option(GENERATE_TEMPLATE_GET_NODE "Generate a template version of the Node class's get_node." ON) +option(GODOT_CPP_SYSTEM_HEADERS "Expose headers as SYSTEM." OFF) # Default build type is Debug in the SConstruct if("${CMAKE_BUILD_TYPE}" STREQUAL "") @@ -169,11 +171,19 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") target_compile_definitions(${PROJECT_NAME} PUBLIC TYPED_METHOD_BIND) endif() -target_include_directories(${PROJECT_NAME} PUBLIC +# Optionally mark headers as SYSTEM +set(GODOT_CPP_SYSTEM_HEADERS_ATTRIBUTE "") +if (GODOT_CPP_SYSTEM_HEADERS) + set(GODOT_CPP_SYSTEM_HEADERS_ATTRIBUTE SYSTEM) +endif () + +target_include_directories(${PROJECT_NAME} ${GODOT_CPP_SYSTEM_HEADERS_ATTRIBUTE} PUBLIC include ${CMAKE_CURRENT_BINARY_DIR}/gen/include ) +unset( GODOT_CPP_SYSTEM_HEADERS_ATTRIBUTE ) + # Put godot headers as SYSTEM PUBLIC to exclude warnings from irrelevant headers target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC