1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-14 02:08:27 +08:00

autogen: compute short directories too

Not just short directory roots. The test suites did an improper
generator check and masked them as the generator masks were put in place
after the core development but before the autogen-specific logic tests
were created.
This commit is contained in:
Ben Boeckel
2025-08-07 21:53:29 -04:00
parent 6e3b691ddc
commit fe0163cd23
12 changed files with 38 additions and 16 deletions

View File

@@ -974,7 +974,8 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
std::string cleanArgs =
cmStrCat("-E chdir \"", lgen->GetObjectOutputRoot(), "\" \"",
cmSystemTools::GetCMakeCommand(), "\" -P \"");
cleanArgs += lgen->GetTargetDirectory(target.get());
cleanArgs += lgen->GetTargetDirectory(
target.get(), cmStateEnums::IntermediateDirKind::ObjectFiles);
cleanArgs += "/cmake_clean.cmake\"";
cmExtraEclipseCDT4Generator::AppendTarget(
xml, "Clean", cmSystemTools::GetCMakeCommand(), cleanArgs,

View File

@@ -5436,7 +5436,7 @@ std::string cmGeneratorTarget::GetSupportDirectory(
{
cmLocalGenerator* lg = this->GetLocalGenerator();
return cmStrCat(lg->GetObjectOutputRoot(kind), '/',
lg->GetTargetDirectory(this));
lg->GetTargetDirectory(this, kind));
}
std::string cmGeneratorTarget::GetCMFSupportDirectory(
@@ -5445,10 +5445,10 @@ std::string cmGeneratorTarget::GetCMFSupportDirectory(
cmLocalGenerator* lg = this->GetLocalGenerator();
if (!lg->AlwaysUsesCMFPaths()) {
return cmStrCat(lg->GetCurrentBinaryDirectory(), "/CMakeFiles/",
lg->GetTargetDirectory(this));
lg->GetTargetDirectory(this, kind));
}
return cmStrCat(lg->GetObjectOutputRoot(kind), '/',
lg->GetTargetDirectory(this));
lg->GetTargetDirectory(this, kind));
}
bool cmGeneratorTarget::IsLinkable() const

View File

@@ -105,9 +105,10 @@ std::string cmLocalCommonGenerator::ComputeLongTargetDirectory(
}
std::string cmLocalCommonGenerator::GetTargetDirectory(
cmGeneratorTarget const* target) const
cmGeneratorTarget const* target,
cmStateEnums::IntermediateDirKind kind) const
{
if (target->GetUseShortObjectNames()) {
if (target->GetUseShortObjectNames(kind)) {
return this->ComputeShortTargetDirectory(target);
}
return this->ComputeLongTargetDirectory(target);

View File

@@ -15,6 +15,9 @@ class cmGlobalGenerator;
class cmMakefile;
struct cmObjectLocations;
class cmSourceFile;
namespace cmStateEnums {
enum class IntermediateDirKind;
}
/** \class cmLocalCommonGenerator
* \brief Common infrastructure for Makefile and Ninja local generators.
@@ -37,7 +40,8 @@ public:
std::string ComputeLongTargetDirectory(cmGeneratorTarget const* gt) const;
std::string GetTargetDirectory(
cmGeneratorTarget const* target) const override;
cmGeneratorTarget const* target,
cmStateEnums::IntermediateDirKind kind) const override;
void ComputeObjectFilenames(
std::map<cmSourceFile const*, cmObjectLocations>& mapping,

View File

@@ -4381,7 +4381,8 @@ std::string const& cmLocalGenerator::GetCurrentSourceDirectory() const
}
std::string cmLocalGenerator::GetTargetDirectory(
cmGeneratorTarget const* /*unused*/) const
cmGeneratorTarget const* /*unused*/,
cmStateEnums::IntermediateDirKind /*kind*/) const
{
cmSystemTools::Error("GetTargetDirectory"
" called on cmLocalGenerator");

View File

@@ -429,7 +429,8 @@ public:
* per-target support directory.
*/
virtual std::string GetTargetDirectory(
cmGeneratorTarget const* target) const;
cmGeneratorTarget const* target,
cmStateEnums::IntermediateDirKind kind) const;
cmPolicies::PolicyStatus GetPolicyStatus(cmPolicies::PolicyID id) const;

View File

@@ -15,6 +15,10 @@
#include "cmStringAlgorithms.h"
#include "cmSystemTools.h"
namespace cmStateEnums {
enum class IntermediateDirKind;
}
cmLocalGhsMultiGenerator::cmLocalGhsMultiGenerator(cmGlobalGenerator* gg,
cmMakefile* mf)
: cmLocalGenerator(gg, mf)
@@ -24,7 +28,8 @@ cmLocalGhsMultiGenerator::cmLocalGhsMultiGenerator(cmGlobalGenerator* gg,
cmLocalGhsMultiGenerator::~cmLocalGhsMultiGenerator() = default;
std::string cmLocalGhsMultiGenerator::GetTargetDirectory(
cmGeneratorTarget const* target) const
cmGeneratorTarget const* target,
cmStateEnums::IntermediateDirKind /*kind*/) const
{
std::string dir = cmStrCat(target->GetName(), ".dir");
return dir;

View File

@@ -12,6 +12,9 @@ class cmGlobalGenerator;
class cmMakefile;
struct cmObjectLocations;
class cmSourceFile;
namespace cmStateEnums {
enum class IntermediateDirKind;
}
/** \class cmLocalGhsMultiGenerator
* \brief Write Green Hills MULTI project files.
@@ -32,7 +35,8 @@ public:
void Generate() override;
std::string GetTargetDirectory(
cmGeneratorTarget const* target) const override;
cmGeneratorTarget const* target,
cmStateEnums::IntermediateDirKind kind) const override;
void ComputeObjectFilenames(
std::map<cmSourceFile const*, cmObjectLocations>& mapping,

View File

@@ -2229,10 +2229,11 @@ void cmLocalVisualStudio7Generator::ReadAndStoreExternalGUID(
}
std::string cmLocalVisualStudio7Generator::GetTargetDirectory(
cmGeneratorTarget const* target) const
cmGeneratorTarget const* target,
cmStateEnums::IntermediateDirKind kind) const
{
std::string dir;
if (target->GetUseShortObjectNames()) {
if (target->GetUseShortObjectNames(kind)) {
dir = this->ComputeShortTargetDirectory(target);
} else {
dir = cmStrCat(target->GetName(), ".dir");

View File

@@ -12,6 +12,7 @@
#include <vector>
#include "cmLocalVisualStudioGenerator.h"
#include "cmStateTypes.h"
#include "cmVisualStudioGeneratorOptions.h"
class cmCustomCommand;
@@ -76,7 +77,8 @@ public:
void SetBuildType(BuildType, std::string const& name);
std::string GetTargetDirectory(
cmGeneratorTarget const* target) const override;
cmGeneratorTarget const* target,
cmStateEnums::IntermediateDirKind kind) const override;
cmSourceFile* CreateVCProjBuildRule();
void WriteStampFiles();
std::string ComputeLongestObjectDirectory(

View File

@@ -28,7 +28,8 @@ cmLocalXCodeGenerator::cmLocalXCodeGenerator(cmGlobalGenerator* gg,
cmLocalXCodeGenerator::~cmLocalXCodeGenerator() = default;
std::string cmLocalXCodeGenerator::GetTargetDirectory(
cmGeneratorTarget const* target) const
cmGeneratorTarget const* target,
cmStateEnums::IntermediateDirKind /*kind*/) const
{
return cmStrCat(target->GetName(), ".dir");
}

View File

@@ -30,7 +30,8 @@ public:
~cmLocalXCodeGenerator() override;
std::string GetTargetDirectory(
cmGeneratorTarget const* target) const override;
cmGeneratorTarget const* target,
cmStateEnums::IntermediateDirKind kind) const override;
void AppendFlagEscape(std::string& flags,
std::string const& rawFlag) const override;
void Generate() override;