enable_language(CXX) include(FetchContent) FetchContent_Declare( IncludesSystem SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/IncludesSystem SYSTEM ) FetchContent_MakeAvailable(IncludesSystem) FetchContent_Declare( IncludesNonSystem SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/IncludesNonSystem ) FetchContent_MakeAvailable(IncludesNonSystem) function(check_target_system target expected_value) get_target_property(var ${target} SYSTEM) if ((var AND NOT expected_value) OR (NOT var AND expected_value)) message(SEND_ERROR "\ The 'SYSTEM' property of ${target} should be ${expected_value}, \ but got ${var}") endif() endfunction() check_target_system(foo OFF) check_target_system(bar ON) check_target_system(zot ON) check_target_system(subsub1foo OFF) check_target_system(subsub1bar ON) check_target_system(subsub1zot ON) check_target_system(subsub2foo OFF) check_target_system(subsub2bar ON) check_target_system(subsub2zot ON) check_target_system(foononsys OFF) check_target_system(barnonsys OFF)