1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-14 19:08:07 +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 = std::string cleanArgs =
cmStrCat("-E chdir \"", lgen->GetObjectOutputRoot(), "\" \"", cmStrCat("-E chdir \"", lgen->GetObjectOutputRoot(), "\" \"",
cmSystemTools::GetCMakeCommand(), "\" -P \""); cmSystemTools::GetCMakeCommand(), "\" -P \"");
cleanArgs += lgen->GetTargetDirectory(target.get()); cleanArgs += lgen->GetTargetDirectory(
target.get(), cmStateEnums::IntermediateDirKind::ObjectFiles);
cleanArgs += "/cmake_clean.cmake\""; cleanArgs += "/cmake_clean.cmake\"";
cmExtraEclipseCDT4Generator::AppendTarget( cmExtraEclipseCDT4Generator::AppendTarget(
xml, "Clean", cmSystemTools::GetCMakeCommand(), cleanArgs, xml, "Clean", cmSystemTools::GetCMakeCommand(), cleanArgs,

View File

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

View File

@@ -105,9 +105,10 @@ std::string cmLocalCommonGenerator::ComputeLongTargetDirectory(
} }
std::string cmLocalCommonGenerator::GetTargetDirectory( 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->ComputeShortTargetDirectory(target);
} }
return this->ComputeLongTargetDirectory(target); return this->ComputeLongTargetDirectory(target);

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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