mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-07 06:09:52 -06:00
cmSourceFile: mark known locations as such
Primarily, this includes: - the rule files generated for custom targets; - source files representing custom targets directly; - outputs of custom commands; - byproducts of custom commands; and - dependencies of custom commands.
This commit is contained in:
@@ -855,7 +855,7 @@ cmSourceFile* cmMakefile::AddCustomCommandToOutput(
|
||||
std::string outName = gg->GenerateRuleFile(outputs[0]);
|
||||
|
||||
// Check if the rule file already exists.
|
||||
file = this->GetSource(outName);
|
||||
file = this->GetSource(outName, cmSourceFileLocationKind::Known);
|
||||
if (file && file->GetCustomCommand() && !replace) {
|
||||
// The rule file already exists.
|
||||
if (commandLines != file->GetCustomCommand()->GetCommandLines()) {
|
||||
@@ -868,19 +868,22 @@ cmSourceFile* cmMakefile::AddCustomCommandToOutput(
|
||||
|
||||
// Create a cmSourceFile for the rule file.
|
||||
if (!file) {
|
||||
file = this->CreateSource(outName, true);
|
||||
file =
|
||||
this->CreateSource(outName, true, cmSourceFileLocationKind::Known);
|
||||
}
|
||||
file->SetProperty("__CMAKE_RULE", "1");
|
||||
}
|
||||
|
||||
// Always create the output sources and mark them generated.
|
||||
for (std::string const& o : outputs) {
|
||||
if (cmSourceFile* out = this->GetOrCreateSource(o, true)) {
|
||||
if (cmSourceFile* out =
|
||||
this->GetOrCreateSource(o, true, cmSourceFileLocationKind::Known)) {
|
||||
out->SetProperty("GENERATED", "1");
|
||||
}
|
||||
}
|
||||
for (std::string const& o : byproducts) {
|
||||
if (cmSourceFile* out = this->GetOrCreateSource(o, true)) {
|
||||
if (cmSourceFile* out =
|
||||
this->GetOrCreateSource(o, true, cmSourceFileLocationKind::Known)) {
|
||||
out->SetProperty("GENERATED", "1");
|
||||
}
|
||||
}
|
||||
@@ -1092,7 +1095,8 @@ cmTarget* cmMakefile::AddUtilityCommand(
|
||||
|
||||
// Always create the byproduct sources and mark them generated.
|
||||
for (std::string const& byproduct : byproducts) {
|
||||
if (cmSourceFile* out = this->GetOrCreateSource(byproduct, true)) {
|
||||
if (cmSourceFile* out = this->GetOrCreateSource(
|
||||
byproduct, true, cmSourceFileLocationKind::Known)) {
|
||||
out->SetProperty("GENERATED", "1");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
#include "cmPropertyMap.h"
|
||||
#include "cmSourceFileLocation.h"
|
||||
#include "cmSourceFileLocationKind.h"
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
@@ -607,7 +607,8 @@ public:
|
||||
|
||||
cmSourceFile* cmTarget::AddSource(const std::string& src)
|
||||
{
|
||||
cmSourceFileLocation sfl(this->Makefile, src);
|
||||
cmSourceFileLocation sfl(this->Makefile, src,
|
||||
cmSourceFileLocationKind::Known);
|
||||
if (std::find_if(this->Internal->SourceEntries.begin(),
|
||||
this->Internal->SourceEntries.end(),
|
||||
TargetPropertyEntryFinder(sfl)) ==
|
||||
@@ -619,7 +620,8 @@ cmSourceFile* cmTarget::AddSource(const std::string& src)
|
||||
if (cmGeneratorExpression::Find(src) != std::string::npos) {
|
||||
return nullptr;
|
||||
}
|
||||
return this->Makefile->GetOrCreateSource(src);
|
||||
return this->Makefile->GetOrCreateSource(src, false,
|
||||
cmSourceFileLocationKind::Known);
|
||||
}
|
||||
|
||||
void cmTarget::AddLinkDirectory(const std::string& d)
|
||||
|
||||
Reference in New Issue
Block a user