mirror of
https://github.com/Kitware/CMake.git
synced 2026-02-18 05:01:50 -06:00
cmGeneratorTarget: Drop obj libs from GetConfigCommonSourceFiles
Call sites such as those in the VS global generator that are used only to reject per-config sources will now allow per-config object library objects. The corresponding generators have already been taught to deal with per-config object library files. Remaining call sites do not need object library files anyway. This will later allow `$<TARGET_OBJECTS:...>` generator expressions to evaluate to values that vary by configuration (e.g. because each configuration has its own object files).
This commit is contained in:
@@ -949,6 +949,19 @@ void cmGeneratorTarget::GetSourceFiles(std::vector<cmSourceFile*>& files,
|
||||
}
|
||||
}
|
||||
|
||||
void cmGeneratorTarget::GetSourceFilesWithoutObjectLibraries(
|
||||
std::vector<cmSourceFile*>& files, const std::string& config) const
|
||||
{
|
||||
KindedSources const& kinded = this->GetKindedSources(config);
|
||||
files.reserve(kinded.Sources.size());
|
||||
for (std::vector<SourceAndKind>::const_iterator si = kinded.Sources.begin();
|
||||
si != kinded.Sources.end(); ++si) {
|
||||
if (si->Source->GetObjectLibrary().empty()) {
|
||||
files.push_back(si->Source);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cmGeneratorTarget::KindedSources const& cmGeneratorTarget::GetKindedSources(
|
||||
std::string const& config) const
|
||||
{
|
||||
@@ -4937,11 +4950,11 @@ bool cmGeneratorTarget::GetConfigCommonSourceFiles(
|
||||
|
||||
std::vector<std::string>::const_iterator it = configs.begin();
|
||||
const std::string& firstConfig = *it;
|
||||
this->GetSourceFiles(files, firstConfig);
|
||||
this->GetSourceFilesWithoutObjectLibraries(files, firstConfig);
|
||||
|
||||
for (; it != configs.end(); ++it) {
|
||||
std::vector<cmSourceFile*> configFiles;
|
||||
this->GetSourceFiles(configFiles, *it);
|
||||
this->GetSourceFilesWithoutObjectLibraries(configFiles, *it);
|
||||
if (configFiles != files) {
|
||||
std::string firstConfigFiles;
|
||||
const char* sep = "";
|
||||
|
||||
@@ -70,6 +70,8 @@ public:
|
||||
bool GetPropertyAsBool(const std::string& prop) const;
|
||||
void GetSourceFiles(std::vector<cmSourceFile*>& files,
|
||||
const std::string& config) const;
|
||||
void GetSourceFilesWithoutObjectLibraries(std::vector<cmSourceFile*>& files,
|
||||
const std::string& config) const;
|
||||
|
||||
/** Source file kinds (classifications).
|
||||
Generators use this to decide how to treat a source file. */
|
||||
@@ -350,6 +352,9 @@ public:
|
||||
std::string GetFullNameImported(const std::string& config,
|
||||
bool implib) const;
|
||||
|
||||
/** Get source files common to all configurations and diagnose cases
|
||||
with per-config sources. Excludes sources added by a TARGET_OBJECTS
|
||||
generator expression. */
|
||||
bool GetConfigCommonSourceFiles(std::vector<cmSourceFile*>& files) const;
|
||||
|
||||
bool HaveBuildTreeRPATH(const std::string& config) const;
|
||||
|
||||
Reference in New Issue
Block a user