mirror of
https://github.com/reactos/CMake.git
synced 2024-12-14 15:19:39 +00:00
Xcode: Properly mark SYSTEM includes as such
We now populate the per-language flags in addition to the header search paths stored in HEADER_SEARCH_PATHS. This preserves include paths for GNU assembly files (cmake/cmake#16449) and also provides SYSTEM include semantics. Closes: cmake/cmake#15687
This commit is contained in:
parent
65fb0fa632
commit
88f07fb417
@ -1977,6 +1977,22 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt,
|
||||
buildSettings->AddAttribute("HEADER_SEARCH_PATHS", dirs.CreateList());
|
||||
}
|
||||
|
||||
if (this->XcodeVersion >= 60) {
|
||||
// Add those per-language flags in addition to HEADER_SEARCH_PATHS to gain
|
||||
// system include directory awareness. We need to also keep on setting
|
||||
// HEADER_SEARCH_PATHS to work around a missing compile options flag for
|
||||
// GNU assembly files (#16449)
|
||||
for (std::set<std::string>::iterator li = languages.begin();
|
||||
li != languages.end(); ++li) {
|
||||
std::string includeFlags = this->CurrentLocalGenerator->GetIncludeFlags(
|
||||
includes, gtgt, *li, true, false, configName);
|
||||
|
||||
if (!includeFlags.empty()) {
|
||||
cflags[*li] += " " + includeFlags;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool same_gflags = true;
|
||||
std::map<std::string, std::string> gflags;
|
||||
std::string const* last_gflag = 0;
|
||||
|
@ -3,7 +3,9 @@ project(IncludeDirectories)
|
||||
|
||||
if (((CMAKE_C_COMPILER_ID STREQUAL GNU AND CMAKE_C_COMPILER_VERSION VERSION_GREATER 4.4)
|
||||
OR CMAKE_C_COMPILER_ID STREQUAL Clang OR CMAKE_C_COMPILER_ID STREQUAL AppleClang)
|
||||
AND (CMAKE_GENERATOR STREQUAL "Unix Makefiles" OR CMAKE_GENERATOR STREQUAL "Ninja"))
|
||||
AND (CMAKE_GENERATOR STREQUAL "Unix Makefiles"
|
||||
OR CMAKE_GENERATOR STREQUAL "Ninja"
|
||||
OR (CMAKE_GENERATOR STREQUAL "Xcode" AND NOT XCODE_VERSION VERSION_LESS 6.0)))
|
||||
include(CheckCXXCompilerFlag)
|
||||
check_cxx_compiler_flag(-Wunused-variable run_sys_includes_test)
|
||||
if(run_sys_includes_test)
|
||||
|
@ -15,10 +15,17 @@ target_include_directories(upstream SYSTEM PUBLIC
|
||||
)
|
||||
|
||||
add_library(config_specific INTERFACE)
|
||||
set(testConfig ${CMAKE_BUILD_TYPE})
|
||||
target_include_directories(config_specific SYSTEM INTERFACE
|
||||
"$<$<CONFIG:${testConfig}>:${CMAKE_CURRENT_SOURCE_DIR}/config_specific>"
|
||||
)
|
||||
if(CMAKE_GENERATOR STREQUAL "Xcode")
|
||||
# CMAKE_BUILD_TYPE does not work here for multi-config generators
|
||||
target_include_directories(config_specific SYSTEM INTERFACE
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/config_specific"
|
||||
)
|
||||
else()
|
||||
set(testConfig ${CMAKE_BUILD_TYPE})
|
||||
target_include_directories(config_specific SYSTEM INTERFACE
|
||||
"$<$<CONFIG:${testConfig}>:${CMAKE_CURRENT_SOURCE_DIR}/config_specific>"
|
||||
)
|
||||
endif()
|
||||
|
||||
add_library(consumer consumer.cpp)
|
||||
target_link_libraries(consumer upstream config_specific)
|
||||
|
Loading…
Reference in New Issue
Block a user