diff options
author | Marco Bubke <marco.bubke@qt.io> | 2019-05-06 15:58:39 +0200 |
---|---|---|
committer | Marco Bubke <marco.bubke@qt.io> | 2019-06-05 13:54:21 +0000 |
commit | e904fc202cca96ca4f1e48a479cc792650212b07 (patch) | |
tree | 9ec740260d3a36a393f4c4f4aba415010fccbe4f | |
parent | 0251d610f1e77714b44f8d8a5a5275e6b13af1dd (diff) |
Clang: Filter macro QT_TESTCASE_BUILDDIR out
We have to universalize it later with a UI so that user can set their
own macros.
Change-Id: I5385c3c1b01dbf77a1cbc2431103fcdea3f96118
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
-rw-r--r-- | src/plugins/clangpchmanager/projectupdater.cpp | 16 | ||||
-rw-r--r-- | tests/unit/unittest/projectupdater-test.cpp | 8 |
2 files changed, 24 insertions, 0 deletions
diff --git a/src/plugins/clangpchmanager/projectupdater.cpp b/src/plugins/clangpchmanager/projectupdater.cpp index df611ef1bc..3d340aea88 100644 --- a/src/plugins/clangpchmanager/projectupdater.cpp +++ b/src/plugins/clangpchmanager/projectupdater.cpp @@ -156,6 +156,7 @@ QStringList ProjectUpdater::toolChainArguments(CppTools::ProjectPart *projectPar // builder.addTargetTriple(); TODO resarch why target triples are different builder.addExtraCodeModelFlags(); builder.undefineClangVersionMacrosForMsvc(); + builder.undefineCppLanguageFeatureMacrosForMsvc2015(); builder.addProjectConfigFileInclude(); builder.addMsvcCompatibilityVersion(); @@ -163,6 +164,19 @@ QStringList ProjectUpdater::toolChainArguments(CppTools::ProjectPart *projectPar return builder.options(); } +namespace { +void cleanupMacros(ClangBackEnd::CompilerMacros ¯os) +{ + auto newEnd = std::partition(macros.begin(), + macros.end(), + [](const ClangBackEnd::CompilerMacro ¯o) { + return macro.key != "QT_TESTCASE_BUILDDIR"; + }); + + macros.erase(newEnd, macros.end()); +} +} // namespace + ClangBackEnd::CompilerMacros ProjectUpdater::createCompilerMacros(const ProjectExplorer::Macros &projectMacros) { int index = 0; @@ -171,6 +185,8 @@ ClangBackEnd::CompilerMacros ProjectUpdater::createCompilerMacros(const ProjectE return ClangBackEnd::CompilerMacro{macro.key, macro.value, ++index}; }); + cleanupMacros(macros); + std::sort(macros.begin(), macros.end()); return macros; diff --git a/tests/unit/unittest/projectupdater-test.cpp b/tests/unit/unittest/projectupdater-test.cpp index d5da706b55..960a256469 100644 --- a/tests/unit/unittest/projectupdater-test.cpp +++ b/tests/unit/unittest/projectupdater-test.cpp @@ -310,6 +310,14 @@ TEST_F(ProjectUpdater, CreateSortedCompilerMacros) CompilerMacro{"DEFINE", "1", 3})); } +TEST_F(ProjectUpdater, FilterCompilerMacros) +{ + auto paths = updater.createCompilerMacros( + {{"DEFINE", "1"}, {"QT_TESTCASE_BUILDDIR", "2"}, {"BAR", "1"}}); + + ASSERT_THAT(paths, ElementsAre(CompilerMacro{"BAR", "1", 1}, CompilerMacro{"DEFINE", "1", 3})); +} + TEST_F(ProjectUpdater, CreateSortedIncludeSearchPaths) { CppTools::ProjectPart projectPart; |