forked from qt-creator/qt-creator
Clang: Fix some issues with running indexer over Qt Creator
- fix qDebug channels on Windows - fix the number of perameters in the sql statement - fix nullptr access - speed up preprocessor a little bit Change-Id: Ic9b32fbcc6b409c4064c4f522b94391cbff8654e Reviewed-by: Marco Bubke <marco.bubke@qt.io>
This commit is contained in:
@@ -270,7 +270,7 @@ public:
|
|||||||
void addNoStdIncAndNoStdLibInc()
|
void addNoStdIncAndNoStdLibInc()
|
||||||
{
|
{
|
||||||
commandLine.emplace_back("-nostdinc");
|
commandLine.emplace_back("-nostdinc");
|
||||||
commandLine.emplace_back("-nostdlibinc");
|
commandLine.emplace_back("-nostdinc++");
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@@ -161,5 +161,6 @@ public:
|
|||||||
|
|
||||||
using ProjectPartContainers = std::vector<ProjectPartContainer>;
|
using ProjectPartContainers = std::vector<ProjectPartContainer>;
|
||||||
|
|
||||||
QDebug operator<<(QDebug debug, const ProjectPartContainer &container);
|
CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const ProjectPartContainer &container);
|
||||||
|
|
||||||
} // namespace ClangBackEnd
|
} // namespace ClangBackEnd
|
||||||
|
@@ -55,6 +55,7 @@
|
|||||||
#include <QTemporaryDir>
|
#include <QTemporaryDir>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
|
#include <iostream>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
|
|
||||||
using namespace std::chrono_literals;
|
using namespace std::chrono_literals;
|
||||||
@@ -214,8 +215,20 @@ struct Data // because we have a cycle dependency
|
|||||||
ClangBackEnd::CallDoInMainThreadAfterFinished::Yes};
|
ClangBackEnd::CallDoInMainThreadAfterFinished::Yes};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef Q_OS_WIN
|
||||||
|
static void messageOutput(QtMsgType type, const QMessageLogContext &, const QString &msg)
|
||||||
|
{
|
||||||
|
std::wcout << msg.toStdWString() << std::endl;
|
||||||
|
if (type == QtFatalMsg)
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
#ifdef Q_OS_WIN
|
||||||
|
qInstallMessageHandler(messageOutput);
|
||||||
|
#endif
|
||||||
try {
|
try {
|
||||||
QCoreApplication::setOrganizationName(QStringLiteral("QtProject"));
|
QCoreApplication::setOrganizationName(QStringLiteral("QtProject"));
|
||||||
QCoreApplication::setOrganizationDomain(QStringLiteral("qt-project.org"));
|
QCoreApplication::setOrganizationDomain(QStringLiteral("qt-project.org"));
|
||||||
|
@@ -58,6 +58,7 @@ public:
|
|||||||
auto &preprocessor = compilerInstance.getPreprocessor();
|
auto &preprocessor = compilerInstance.getPreprocessor();
|
||||||
|
|
||||||
preprocessor.SetSuppressIncludeNotFoundError(true);
|
preprocessor.SetSuppressIncludeNotFoundError(true);
|
||||||
|
preprocessor.SetMacroExpansionOnlyInDirectives();
|
||||||
|
|
||||||
auto macroPreprocessorCallbacks = new CollectBuildDependencyPreprocessorCallbacks(
|
auto macroPreprocessorCallbacks = new CollectBuildDependencyPreprocessorCallbacks(
|
||||||
m_buildDependency,
|
m_buildDependency,
|
||||||
|
@@ -39,6 +39,7 @@
|
|||||||
#include <sqliteexception.h>
|
#include <sqliteexception.h>
|
||||||
|
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
using namespace std::chrono_literals;
|
using namespace std::chrono_literals;
|
||||||
|
|
||||||
@@ -97,8 +98,20 @@ struct Data // because we have a cycle dependency
|
|||||||
SymbolIndexing symbolIndexing{database, filePathCache, generatedFiles, [&] (int progress, int total) { clangCodeModelServer.setProgress(progress, total); }};
|
SymbolIndexing symbolIndexing{database, filePathCache, generatedFiles, [&] (int progress, int total) { clangCodeModelServer.setProgress(progress, total); }};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef Q_OS_WIN
|
||||||
|
static void messageOutput(QtMsgType type, const QMessageLogContext &, const QString &msg)
|
||||||
|
{
|
||||||
|
std::wcout << msg.toStdWString() << std::endl;
|
||||||
|
if (type == QtFatalMsg)
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
#ifdef Q_OS_WIN
|
||||||
|
qInstallMessageHandler(messageOutput);
|
||||||
|
#endif
|
||||||
try {
|
try {
|
||||||
QCoreApplication::setOrganizationName(QStringLiteral("QtProject"));
|
QCoreApplication::setOrganizationName(QStringLiteral("QtProject"));
|
||||||
QCoreApplication::setOrganizationDomain(QStringLiteral("qt-project.org"));
|
QCoreApplication::setOrganizationDomain(QStringLiteral("qt-project.org"));
|
||||||
|
@@ -95,8 +95,6 @@ public:
|
|||||||
|
|
||||||
bool isClean() const;
|
bool isClean() const;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
RefactoringCompilationDatabase m_compilationDatabase;
|
RefactoringCompilationDatabase m_compilationDatabase;
|
||||||
std::vector<FileContent> m_fileContents;
|
std::vector<FileContent> m_fileContents;
|
||||||
|
@@ -341,12 +341,14 @@ public:
|
|||||||
m_database};
|
m_database};
|
||||||
mutable ReadStatement m_getProjectPartArtefactsBySourceId{
|
mutable ReadStatement m_getProjectPartArtefactsBySourceId{
|
||||||
"SELECT toolChainArguments, compilerMacros, systemIncludeSearchPaths, "
|
"SELECT toolChainArguments, compilerMacros, systemIncludeSearchPaths, "
|
||||||
"projectIncludeSearchPaths, projectPartId FROM projectParts WHERE projectPartId = (SELECT "
|
"projectIncludeSearchPaths, projectPartId, language, languageVersion, languageExtension "
|
||||||
|
"FROM projectParts WHERE projectPartId = (SELECT "
|
||||||
"projectPartId FROM projectPartsSources WHERE sourceId = ?)",
|
"projectPartId FROM projectPartsSources WHERE sourceId = ?)",
|
||||||
m_database};
|
m_database};
|
||||||
mutable ReadStatement m_getProjectPartArtefactsByProjectPartName{
|
mutable ReadStatement m_getProjectPartArtefactsByProjectPartName{
|
||||||
"SELECT toolChainArguments, compilerMacros, systemIncludeSearchPaths, "
|
"SELECT toolChainArguments, compilerMacros, systemIncludeSearchPaths, "
|
||||||
"projectIncludeSearchPaths, projectPartId FROM projectParts WHERE projectPartName = ?",
|
"projectIncludeSearchPaths, projectPartId, language, languageVersion, languageExtension "
|
||||||
|
"FROM projectParts WHERE projectPartName = ?",
|
||||||
m_database};
|
m_database};
|
||||||
mutable ReadStatement m_getPrecompiledHeader{
|
mutable ReadStatement m_getPrecompiledHeader{
|
||||||
"SELECT projectPchPath, projectPchBuildTime FROM precompiledHeaders WHERE projectPartId = ?",
|
"SELECT projectPchPath, projectPchBuildTime FROM precompiledHeaders WHERE projectPartId = ?",
|
||||||
|
@@ -68,7 +68,8 @@ public:
|
|||||||
bool isAlreadyParsed(clang::FileID fileId)
|
bool isAlreadyParsed(clang::FileID fileId)
|
||||||
{
|
{
|
||||||
const clang::FileEntry *fileEntry = m_sourceManager->getFileEntryForID(fileId);
|
const clang::FileEntry *fileEntry = m_sourceManager->getFileEntryForID(fileId);
|
||||||
|
if (!fileEntry)
|
||||||
|
return false;
|
||||||
return m_sourcesManager.alreadyParsed(filePathId(fileEntry),
|
return m_sourcesManager.alreadyParsed(filePathId(fileEntry),
|
||||||
fileEntry->getModificationTime());
|
fileEntry->getModificationTime());
|
||||||
}
|
}
|
||||||
|
@@ -435,9 +435,7 @@ TEST_F(BuildDependencyCollector, CollectUsedMacrosWithExternalDefine)
|
|||||||
ElementsAre(Eq(UsedMacro{"DEFINED", fileId}),
|
ElementsAre(Eq(UsedMacro{"DEFINED", fileId}),
|
||||||
Eq(UsedMacro{"IF_DEFINE", fileId}),
|
Eq(UsedMacro{"IF_DEFINE", fileId}),
|
||||||
Eq(UsedMacro{"__clang__", fileId}),
|
Eq(UsedMacro{"__clang__", fileId}),
|
||||||
Eq(UsedMacro{"CLASS_EXPORT", fileId}),
|
|
||||||
Eq(UsedMacro{"IF_NOT_DEFINE", fileId}),
|
Eq(UsedMacro{"IF_NOT_DEFINE", fileId}),
|
||||||
Eq(UsedMacro{"MACRO_EXPANSION", fileId}),
|
|
||||||
Eq(UsedMacro{"COMPILER_ARGUMENT", fileId})));
|
Eq(UsedMacro{"COMPILER_ARGUMENT", fileId})));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -452,9 +450,7 @@ TEST_F(BuildDependencyCollector, CollectUsedMacrosWithoutExternalDefine)
|
|||||||
ElementsAre(Eq(UsedMacro{"DEFINED", fileId}),
|
ElementsAre(Eq(UsedMacro{"DEFINED", fileId}),
|
||||||
Eq(UsedMacro{"IF_DEFINE", fileId}),
|
Eq(UsedMacro{"IF_DEFINE", fileId}),
|
||||||
Eq(UsedMacro{"__clang__", fileId}),
|
Eq(UsedMacro{"__clang__", fileId}),
|
||||||
Eq(UsedMacro{"CLASS_EXPORT", fileId}),
|
|
||||||
Eq(UsedMacro{"IF_NOT_DEFINE", fileId}),
|
Eq(UsedMacro{"IF_NOT_DEFINE", fileId}),
|
||||||
Eq(UsedMacro{"MACRO_EXPANSION", fileId}),
|
|
||||||
Eq(UsedMacro{"COMPILER_ARGUMENT", fileId})));
|
Eq(UsedMacro{"COMPILER_ARGUMENT", fileId})));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -639,7 +635,6 @@ TEST_F(BuildDependencyCollector, Create)
|
|||||||
SourceType::TopProjectInclude))),
|
SourceType::TopProjectInclude))),
|
||||||
Field(&BuildDependency::usedMacros,
|
Field(&BuildDependency::usedMacros,
|
||||||
UnorderedElementsAre(
|
UnorderedElementsAre(
|
||||||
UsedMacro{"DEFINE", id(TESTDATA_DIR "/builddependencycollector/project/macros.h")},
|
|
||||||
UsedMacro{"IFDEF", id(TESTDATA_DIR "/builddependencycollector/project/macros.h")},
|
UsedMacro{"IFDEF", id(TESTDATA_DIR "/builddependencycollector/project/macros.h")},
|
||||||
UsedMacro{"DEFINED",
|
UsedMacro{"DEFINED",
|
||||||
id(TESTDATA_DIR "/builddependencycollector/project/macros.h")})),
|
id(TESTDATA_DIR "/builddependencycollector/project/macros.h")})),
|
||||||
|
@@ -136,7 +136,7 @@ TYPED_TEST(CommandLineBuilder, CTask)
|
|||||||
|
|
||||||
ASSERT_THAT(
|
ASSERT_THAT(
|
||||||
builder.commandLine,
|
builder.commandLine,
|
||||||
ElementsAre("clang", "-x", "c-header", "-std=c11", "-nostdinc", "-nostdlibinc", "/source/file.c"));
|
ElementsAre("clang", "-x", "c-header", "-std=c11", "-nostdinc", "-nostdinc++", "/source/file.c"));
|
||||||
}
|
}
|
||||||
|
|
||||||
TYPED_TEST(CommandLineBuilder, ObjectiveCTask)
|
TYPED_TEST(CommandLineBuilder, ObjectiveCTask)
|
||||||
@@ -153,7 +153,7 @@ TYPED_TEST(CommandLineBuilder, ObjectiveCTask)
|
|||||||
"objective-c-header",
|
"objective-c-header",
|
||||||
"-std=c11",
|
"-std=c11",
|
||||||
"-nostdinc",
|
"-nostdinc",
|
||||||
"-nostdlibinc",
|
"-nostdinc++",
|
||||||
"/source/file.c"));
|
"/source/file.c"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -170,7 +170,7 @@ TYPED_TEST(CommandLineBuilder, CppTask)
|
|||||||
"c++-header",
|
"c++-header",
|
||||||
"-std=c++98",
|
"-std=c++98",
|
||||||
"-nostdinc",
|
"-nostdinc",
|
||||||
"-nostdlibinc",
|
"-nostdinc++",
|
||||||
"/source/file.cpp"));
|
"/source/file.cpp"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -188,7 +188,7 @@ TYPED_TEST(CommandLineBuilder, ObjectiveCppTask)
|
|||||||
"objective-c++-header",
|
"objective-c++-header",
|
||||||
"-std=c++98",
|
"-std=c++98",
|
||||||
"-nostdinc",
|
"-nostdinc",
|
||||||
"-nostdlibinc",
|
"-nostdinc++",
|
||||||
"/source/file.cpp"));
|
"/source/file.cpp"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -420,7 +420,7 @@ TYPED_TEST(CommandLineBuilder, IncludesOrder)
|
|||||||
"c++-header",
|
"c++-header",
|
||||||
"-std=c++11",
|
"-std=c++11",
|
||||||
"-nostdinc",
|
"-nostdinc",
|
||||||
"-nostdlibinc",
|
"-nostdinc++",
|
||||||
"-I",
|
"-I",
|
||||||
"/include/foo",
|
"/include/foo",
|
||||||
"-I",
|
"-I",
|
||||||
@@ -441,7 +441,7 @@ TYPED_TEST(CommandLineBuilder, EmptySourceFile)
|
|||||||
Builder<TypeParam> builder{this->emptyProjectInfo, {}, {}};
|
Builder<TypeParam> builder{this->emptyProjectInfo, {}, {}};
|
||||||
|
|
||||||
ASSERT_THAT(builder.commandLine,
|
ASSERT_THAT(builder.commandLine,
|
||||||
ElementsAre("clang++", "-x", "c++-header", "-std=c++98", "-nostdinc", "-nostdlibinc"));
|
ElementsAre("clang++", "-x", "c++-header", "-std=c++98", "-nostdinc", "-nostdinc++"));
|
||||||
}
|
}
|
||||||
|
|
||||||
TYPED_TEST(CommandLineBuilder, SourceFile)
|
TYPED_TEST(CommandLineBuilder, SourceFile)
|
||||||
@@ -454,7 +454,7 @@ TYPED_TEST(CommandLineBuilder, SourceFile)
|
|||||||
"c++-header",
|
"c++-header",
|
||||||
"-std=c++98",
|
"-std=c++98",
|
||||||
"-nostdinc",
|
"-nostdinc",
|
||||||
"-nostdlibinc",
|
"-nostdinc++",
|
||||||
"/source/file.cpp"));
|
"/source/file.cpp"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -469,7 +469,7 @@ TYPED_TEST(CommandLineBuilder, EmptyOutputFile)
|
|||||||
"c++-header",
|
"c++-header",
|
||||||
"-std=c++98",
|
"-std=c++98",
|
||||||
"-nostdinc",
|
"-nostdinc",
|
||||||
"-nostdlibinc",
|
"-nostdinc++",
|
||||||
"/source/file.cpp"));
|
"/source/file.cpp"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -483,7 +483,7 @@ TYPED_TEST(CommandLineBuilder, OutputFile)
|
|||||||
"c++-header",
|
"c++-header",
|
||||||
"-std=c++98",
|
"-std=c++98",
|
||||||
"-nostdinc",
|
"-nostdinc",
|
||||||
"-nostdlibinc",
|
"-nostdinc++",
|
||||||
"-o",
|
"-o",
|
||||||
"/output/file.o",
|
"/output/file.o",
|
||||||
"/source/file.cpp"));
|
"/source/file.cpp"));
|
||||||
@@ -499,7 +499,7 @@ TYPED_TEST(CommandLineBuilder, IncludePchPath)
|
|||||||
"c++-header",
|
"c++-header",
|
||||||
"-std=c++98",
|
"-std=c++98",
|
||||||
"-nostdinc",
|
"-nostdinc",
|
||||||
"-nostdlibinc",
|
"-nostdinc++",
|
||||||
"-Xclang",
|
"-Xclang",
|
||||||
"-include-pch",
|
"-include-pch",
|
||||||
"-Xclang",
|
"-Xclang",
|
||||||
@@ -521,7 +521,7 @@ TYPED_TEST(CommandLineBuilder, CompilerMacros)
|
|||||||
"c++-header",
|
"c++-header",
|
||||||
"-std=c++98",
|
"-std=c++98",
|
||||||
"-nostdinc",
|
"-nostdinc",
|
||||||
"-nostdlibinc",
|
"-nostdinc++",
|
||||||
"-DER=2",
|
"-DER=2",
|
||||||
"-DYI=1"));
|
"-DYI=1"));
|
||||||
}
|
}
|
||||||
|
@@ -157,7 +157,7 @@ TEST_F(PchCreator, CreateProjectPartClangCompilerArguments)
|
|||||||
"c++-header",
|
"c++-header",
|
||||||
"-std=c++98",
|
"-std=c++98",
|
||||||
"-nostdinc",
|
"-nostdinc",
|
||||||
"-nostdlibinc",
|
"-nostdinc++",
|
||||||
"-I",
|
"-I",
|
||||||
TESTDATA_DIR "/builddependencycollector/project",
|
TESTDATA_DIR "/builddependencycollector/project",
|
||||||
"-isystem",
|
"-isystem",
|
||||||
@@ -183,7 +183,7 @@ TEST_F(PchCreator, CreateProjectPartClangCompilerArgumentsWithSystemPch)
|
|||||||
"c++-header",
|
"c++-header",
|
||||||
"-std=c++98",
|
"-std=c++98",
|
||||||
"-nostdinc",
|
"-nostdinc",
|
||||||
"-nostdlibinc",
|
"-nostdinc++",
|
||||||
"-I",
|
"-I",
|
||||||
TESTDATA_DIR "/builddependencycollector/project",
|
TESTDATA_DIR "/builddependencycollector/project",
|
||||||
"-isystem",
|
"-isystem",
|
||||||
|
@@ -269,7 +269,7 @@ TEST_F(SymbolIndexer, UpdateProjectPartsCallsAddFilesInCollector)
|
|||||||
"c++-header",
|
"c++-header",
|
||||||
"-std=c++14",
|
"-std=c++14",
|
||||||
"-nostdinc",
|
"-nostdinc",
|
||||||
"-nostdlibinc",
|
"-nostdinc++",
|
||||||
"-DBAR=1",
|
"-DBAR=1",
|
||||||
"-DFOO=1",
|
"-DFOO=1",
|
||||||
"-I",
|
"-I",
|
||||||
@@ -299,7 +299,7 @@ TEST_F(SymbolIndexer, UpdateProjectPartsCallsAddFilesWithPrecompiledHeaderInColl
|
|||||||
"c++-header",
|
"c++-header",
|
||||||
"-std=c++14",
|
"-std=c++14",
|
||||||
"-nostdinc",
|
"-nostdinc",
|
||||||
"-nostdlibinc",
|
"-nostdinc++",
|
||||||
"-DBAR=1",
|
"-DBAR=1",
|
||||||
"-DFOO=1",
|
"-DFOO=1",
|
||||||
"-I",
|
"-I",
|
||||||
@@ -332,7 +332,7 @@ TEST_F(SymbolIndexer, UpdateProjectPartsCallsAddFilesWithoutPrecompiledHeaderInC
|
|||||||
"c++-header",
|
"c++-header",
|
||||||
"-std=c++14",
|
"-std=c++14",
|
||||||
"-nostdinc",
|
"-nostdinc",
|
||||||
"-nostdlibinc",
|
"-nostdinc++",
|
||||||
"-DBAR=1",
|
"-DBAR=1",
|
||||||
"-DFOO=1",
|
"-DFOO=1",
|
||||||
"-I",
|
"-I",
|
||||||
@@ -512,7 +512,7 @@ TEST_F(SymbolIndexer, UpdateProjectPartsCallsInOrderWithoutProjectPartArtifact)
|
|||||||
"c++-header",
|
"c++-header",
|
||||||
"-std=c++14",
|
"-std=c++14",
|
||||||
"-nostdinc",
|
"-nostdinc",
|
||||||
"-nostdlibinc",
|
"-nostdinc++",
|
||||||
"-DBAR=1",
|
"-DBAR=1",
|
||||||
"-DFOO=1",
|
"-DFOO=1",
|
||||||
"-I",
|
"-I",
|
||||||
@@ -564,7 +564,7 @@ TEST_F(SymbolIndexer, UpdateProjectPartsCallsInOrderWithProjectPartArtifact)
|
|||||||
"c++-header",
|
"c++-header",
|
||||||
"-std=c++14",
|
"-std=c++14",
|
||||||
"-nostdinc",
|
"-nostdinc",
|
||||||
"-nostdlibinc",
|
"-nostdinc++",
|
||||||
"-DBAR=1",
|
"-DBAR=1",
|
||||||
"-DFOO=1",
|
"-DFOO=1",
|
||||||
"-I",
|
"-I",
|
||||||
@@ -620,7 +620,7 @@ TEST_F(SymbolIndexer, UpdateChangedPathCallsInOrder)
|
|||||||
"c++-header",
|
"c++-header",
|
||||||
"-std=c++14",
|
"-std=c++14",
|
||||||
"-nostdinc",
|
"-nostdinc",
|
||||||
"-nostdlibinc",
|
"-nostdinc++",
|
||||||
"-DBAR=1",
|
"-DBAR=1",
|
||||||
"-DFOO=1",
|
"-DFOO=1",
|
||||||
"-I",
|
"-I",
|
||||||
@@ -682,7 +682,7 @@ TEST_F(SymbolIndexer, UpdateChangedPathIsUsingPrecompiledHeader)
|
|||||||
"c++-header",
|
"c++-header",
|
||||||
"-std=c++14",
|
"-std=c++14",
|
||||||
"-nostdinc",
|
"-nostdinc",
|
||||||
"-nostdlibinc",
|
"-nostdinc++",
|
||||||
"-DBAR=1",
|
"-DBAR=1",
|
||||||
"-DFOO=1",
|
"-DFOO=1",
|
||||||
"-I",
|
"-I",
|
||||||
@@ -717,7 +717,7 @@ TEST_F(SymbolIndexer, UpdateChangedPathIsNotUsingPrecompiledHeaderIfItNotExists)
|
|||||||
"c++-header",
|
"c++-header",
|
||||||
"-std=c++14",
|
"-std=c++14",
|
||||||
"-nostdinc",
|
"-nostdinc",
|
||||||
"-nostdlibinc",
|
"-nostdinc++",
|
||||||
"-DBAR=1",
|
"-DBAR=1",
|
||||||
"-DFOO=1",
|
"-DFOO=1",
|
||||||
"-I",
|
"-I",
|
||||||
|
Reference in New Issue
Block a user