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>
This commit is contained in:
Marco Bubke
2019-05-06 15:58:39 +02:00
parent 0251d610f1
commit e904fc202c
2 changed files with 24 additions and 0 deletions

View File

@@ -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 &macros)
{
auto newEnd = std::partition(macros.begin(),
macros.end(),
[](const ClangBackEnd::CompilerMacro &macro) {
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;

View File

@@ -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;