mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-14 02:08:27 +08:00
Merge topic 'fix-compile-db-crash' into release-3.19
67e2130c96
Makefiles: Fix CMAKE_EXPORT_COMPILE_COMMANDS crash with custom compile rule
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5521
This commit is contained in:
@@ -831,13 +831,17 @@ void cmMakefileTargetGenerator::WriteObjectRuleFiles(
|
||||
compileCommand.replace(compileCommand.find(langFlags), langFlags.size(),
|
||||
this->GetFlags(lang, this->GetConfigName()));
|
||||
std::string langDefines = std::string("$(") + lang + "_DEFINES)";
|
||||
compileCommand.replace(compileCommand.find(langDefines),
|
||||
langDefines.size(),
|
||||
this->GetDefines(lang, this->GetConfigName()));
|
||||
std::string::size_type ldPos = compileCommand.find(langDefines);
|
||||
if (ldPos != std::string::npos) {
|
||||
compileCommand.replace(ldPos, langDefines.size(),
|
||||
this->GetDefines(lang, this->GetConfigName()));
|
||||
}
|
||||
std::string langIncludes = std::string("$(") + lang + "_INCLUDES)";
|
||||
compileCommand.replace(compileCommand.find(langIncludes),
|
||||
langIncludes.size(),
|
||||
this->GetIncludes(lang, this->GetConfigName()));
|
||||
std::string::size_type liPos = compileCommand.find(langIncludes);
|
||||
if (liPos != std::string::npos) {
|
||||
compileCommand.replace(liPos, langIncludes.size(),
|
||||
this->GetIncludes(lang, this->GetConfigName()));
|
||||
}
|
||||
|
||||
cmProp eliminate[] = {
|
||||
this->Makefile->GetDefinition("CMAKE_START_TEMP_FILE"),
|
||||
|
@@ -0,0 +1,5 @@
|
||||
enable_language(C)
|
||||
add_library(empty STATIC empty.c)
|
||||
string(REPLACE "<DEFINES>" "" CMAKE_C_COMPILE_OBJECT "${CMAKE_C_COMPILE_OBJECT}")
|
||||
string(REPLACE "<INCLUDES>" "" CMAKE_C_COMPILE_OBJECT "${CMAKE_C_COMPILE_OBJECT}")
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
@@ -1,3 +1,4 @@
|
||||
include(RunCMake)
|
||||
|
||||
run_cmake_with_options(BeforeProject -DCMAKE_PROJECT_INCLUDE_BEFORE=BeforeProjectBEFORE.cmake)
|
||||
run_cmake(CustomCompileRule)
|
||||
|
Reference in New Issue
Block a user