fix #12392: handle CMAKE_CXX_COMPILER_ARG1 for Eclipse projects
CMAKE_CXX/C_COMPILER_ARG1 have to be used for finding the include dirs and builtin macros, so Eclipse can do code completion Alex
This commit is contained in:
parent
867b226898
commit
3df49dc7b1
|
@ -25,10 +25,12 @@ MACRO(_DETERMINE_GCC_SYSTEM_INCLUDE_DIRS _lang _resultIncludeDirs _resultDefines
|
||||||
|
|
||||||
IF (${_lang} STREQUAL "c++")
|
IF (${_lang} STREQUAL "c++")
|
||||||
SET(_compilerExecutable "${CMAKE_CXX_COMPILER}")
|
SET(_compilerExecutable "${CMAKE_CXX_COMPILER}")
|
||||||
|
SET(_arg1 "${CMAKE_CXX_COMPILER_ARG1}")
|
||||||
ELSE ()
|
ELSE ()
|
||||||
SET(_compilerExecutable "${CMAKE_C_COMPILER}")
|
SET(_compilerExecutable "${CMAKE_C_COMPILER}")
|
||||||
|
SET(_arg1 "${CMAKE_C_COMPILER_ARG1}")
|
||||||
ENDIF ()
|
ENDIF ()
|
||||||
EXECUTE_PROCESS(COMMAND ${_compilerExecutable} -v -E -x ${_lang} -dD dummy
|
EXECUTE_PROCESS(COMMAND ${_compilerExecutable} ${_arg1} -v -E -x ${_lang} -dD dummy
|
||||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/CMakeFiles
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/CMakeFiles
|
||||||
ERROR_VARIABLE _gccOutput
|
ERROR_VARIABLE _gccOutput
|
||||||
OUTPUT_VARIABLE _gccStdout )
|
OUTPUT_VARIABLE _gccStdout )
|
||||||
|
|
|
@ -987,17 +987,26 @@ void cmExtraEclipseCDT4Generator
|
||||||
// we need the "make" and the C (or C++) compiler which are used, Alex
|
// we need the "make" and the C (or C++) compiler which are used, Alex
|
||||||
std::string make = makefile.GetRequiredDefinition("CMAKE_MAKE_PROGRAM");
|
std::string make = makefile.GetRequiredDefinition("CMAKE_MAKE_PROGRAM");
|
||||||
std::string compiler = makefile.GetSafeDefinition("CMAKE_C_COMPILER");
|
std::string compiler = makefile.GetSafeDefinition("CMAKE_C_COMPILER");
|
||||||
|
std::string arg1 = makefile.GetSafeDefinition("CMAKE_C_COMPILER_ARG1");
|
||||||
if (compiler.empty())
|
if (compiler.empty())
|
||||||
{
|
{
|
||||||
compiler = makefile.GetSafeDefinition("CMAKE_CXX_COMPILER");
|
compiler = makefile.GetSafeDefinition("CMAKE_CXX_COMPILER");
|
||||||
|
arg1 = makefile.GetSafeDefinition("CMAKE_CXX_COMPILER_ARG1");
|
||||||
}
|
}
|
||||||
if (compiler.empty()) //Hmm, what to do now ?
|
if (compiler.empty()) //Hmm, what to do now ?
|
||||||
{
|
{
|
||||||
compiler = "gcc";
|
compiler = "gcc";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// the following right now hardcodes gcc behaviour :-/
|
// the following right now hardcodes gcc behaviour :-/
|
||||||
|
std::string compilerArgs =
|
||||||
|
"-E -P -v -dD ${plugin_state_location}/${specs_file}";
|
||||||
|
if (!arg1.empty())
|
||||||
|
{
|
||||||
|
arg1 += " ";
|
||||||
|
compilerArgs = arg1 + compilerArgs;
|
||||||
|
}
|
||||||
|
|
||||||
fout <<
|
fout <<
|
||||||
"<storageModule moduleId=\"scannerConfiguration\">\n"
|
"<storageModule moduleId=\"scannerConfiguration\">\n"
|
||||||
"<autodiscovery enabled=\"true\" problemReportingEnabled=\"true\""
|
"<autodiscovery enabled=\"true\" problemReportingEnabled=\"true\""
|
||||||
|
@ -1007,7 +1016,7 @@ void cmExtraEclipseCDT4Generator
|
||||||
cmExtraEclipseCDT4Generator::AppendScannerProfile(fout,
|
cmExtraEclipseCDT4Generator::AppendScannerProfile(fout,
|
||||||
"org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile",
|
"org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile",
|
||||||
true, "", true, "specsFile",
|
true, "", true, "specsFile",
|
||||||
"-E -P -v -dD ${plugin_state_location}/${specs_file}",
|
compilerArgs,
|
||||||
compiler, true, true);
|
compiler, true, true);
|
||||||
cmExtraEclipseCDT4Generator::AppendScannerProfile(fout,
|
cmExtraEclipseCDT4Generator::AppendScannerProfile(fout,
|
||||||
"org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile",
|
"org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile",
|
||||||
|
|
Loading…
Reference in New Issue