Eclipse: add switch to disable linked resources (#13189)
Eclipse may get confused by these linked resources, because it sees the same source file multiple times then and doesn't recognize that it's the same file actually. Alex
This commit is contained in:
parent
7ded904329
commit
fbda95883c
|
@ -77,6 +77,8 @@ endif()
|
||||||
# This variable is used by the Eclipse generator and appended to the make invocation commands.
|
# This variable is used by the Eclipse generator and appended to the make invocation commands.
|
||||||
set(CMAKE_ECLIPSE_MAKE_ARGUMENTS "${_CMAKE_ECLIPSE_INITIAL_MAKE_ARGS}" CACHE STRING "Additional command line arguments when Eclipse invokes make. Enter e.g. -j<some_number> to get parallel builds")
|
set(CMAKE_ECLIPSE_MAKE_ARGUMENTS "${_CMAKE_ECLIPSE_INITIAL_MAKE_ARGS}" CACHE STRING "Additional command line arguments when Eclipse invokes make. Enter e.g. -j<some_number> to get parallel builds")
|
||||||
|
|
||||||
|
set(CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES TRUE CACHE BOOL "If disabled, CMake will not generate linked resource to the subprojects and to the source files within targets")
|
||||||
|
|
||||||
# This variable is used by the Eclipse generator in out-of-source builds only.
|
# This variable is used by the Eclipse generator in out-of-source builds only.
|
||||||
set(CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT FALSE CACHE BOOL "If enabled, CMake will generate a source project for Eclipse in CMAKE_SOURCE_DIR")
|
set(CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT FALSE CACHE BOOL "If enabled, CMake will generate a source project for Eclipse in CMAKE_SOURCE_DIR")
|
||||||
mark_as_advanced(CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT)
|
mark_as_advanced(CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT)
|
||||||
|
|
|
@ -38,6 +38,7 @@ cmExtraEclipseCDT4Generator
|
||||||
this->SupportedGlobalGenerators.push_back("Unix Makefiles");
|
this->SupportedGlobalGenerators.push_back("Unix Makefiles");
|
||||||
|
|
||||||
this->SupportsVirtualFolders = true;
|
this->SupportsVirtualFolders = true;
|
||||||
|
this->GenerateLinkedResources = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
@ -83,6 +84,9 @@ void cmExtraEclipseCDT4Generator::Generate()
|
||||||
this->HomeDirectory = mf->GetHomeDirectory();
|
this->HomeDirectory = mf->GetHomeDirectory();
|
||||||
this->HomeOutputDirectory = mf->GetHomeOutputDirectory();
|
this->HomeOutputDirectory = mf->GetHomeOutputDirectory();
|
||||||
|
|
||||||
|
this->GenerateLinkedResources = mf->IsOn(
|
||||||
|
"CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES");
|
||||||
|
|
||||||
this->IsOutOfSourceBuild = (this->HomeDirectory!=this->HomeOutputDirectory);
|
this->IsOutOfSourceBuild = (this->HomeDirectory!=this->HomeOutputDirectory);
|
||||||
|
|
||||||
this->GenerateSourceProject = (this->IsOutOfSourceBuild &&
|
this->GenerateSourceProject = (this->IsOutOfSourceBuild &&
|
||||||
|
@ -501,6 +505,10 @@ void cmExtraEclipseCDT4Generator::CreateLinksForTargets(
|
||||||
linkName2 += ti->first;
|
linkName2 += ti->first;
|
||||||
this->AppendLinkedResource(fout, linkName2, "virtual:/virtual",
|
this->AppendLinkedResource(fout, linkName2, "virtual:/virtual",
|
||||||
VirtualFolder);
|
VirtualFolder);
|
||||||
|
if (!this->GenerateLinkedResources)
|
||||||
|
{
|
||||||
|
break; // skip generating the linked resources to the source files
|
||||||
|
}
|
||||||
std::vector<cmSourceGroup> sourceGroups=makefile->GetSourceGroups();
|
std::vector<cmSourceGroup> sourceGroups=makefile->GetSourceGroups();
|
||||||
// get the files from the source lists then add them to the groups
|
// get the files from the source lists then add them to the groups
|
||||||
cmTarget* tgt = const_cast<cmTarget*>(&ti->second);
|
cmTarget* tgt = const_cast<cmTarget*>(&ti->second);
|
||||||
|
@ -555,6 +563,11 @@ void cmExtraEclipseCDT4Generator::CreateLinksForTargets(
|
||||||
void cmExtraEclipseCDT4Generator::CreateLinksToSubprojects(
|
void cmExtraEclipseCDT4Generator::CreateLinksToSubprojects(
|
||||||
cmGeneratedFileStream& fout, const std::string& baseDir)
|
cmGeneratedFileStream& fout, const std::string& baseDir)
|
||||||
{
|
{
|
||||||
|
if (!this->GenerateLinkedResources)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// for each sub project create a linked resource to the source dir
|
// for each sub project create a linked resource to the source dir
|
||||||
// - only if it is an out-of-source build
|
// - only if it is an out-of-source build
|
||||||
this->AppendLinkedResource(fout, "[Subprojects]",
|
this->AppendLinkedResource(fout, "[Subprojects]",
|
||||||
|
|
|
@ -109,6 +109,7 @@ private:
|
||||||
std::string HomeOutputDirectory;
|
std::string HomeOutputDirectory;
|
||||||
bool IsOutOfSourceBuild;
|
bool IsOutOfSourceBuild;
|
||||||
bool GenerateSourceProject;
|
bool GenerateSourceProject;
|
||||||
|
bool GenerateLinkedResources;
|
||||||
bool SupportsVirtualFolders;
|
bool SupportsVirtualFolders;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue