mirror of
https://github.com/Kitware/CMake.git
synced 2026-03-11 12:00:48 -05:00
Replace <TARGET> in CMAKE_<LANG>_COMPILE_OBJECT rule variables
In some languages the compiler may need to know the path of the final target file for which an object is being compiled. Honor the <TARGET> placeholder for compilation rules to support such cases. Note that this cannot work with OBJECT library targets because the final target path is not known during compilation (there can even be more than one final target). Suggested-by: Vittorio Giovara <vittorio.giovara@gmail.com>
This commit is contained in:
@@ -640,18 +640,25 @@ cmMakefileTargetGenerator
|
||||
(commands, buildEcho.c_str(), cmLocalUnixMakefileGenerator3::EchoBuild);
|
||||
}
|
||||
|
||||
std::string targetOutPathReal;
|
||||
std::string targetOutPathPDB;
|
||||
{
|
||||
std::string targetFullPathReal;
|
||||
std::string targetFullPathPDB;
|
||||
if(this->Target->GetType() == cmTarget::EXECUTABLE ||
|
||||
this->Target->GetType() == cmTarget::STATIC_LIBRARY ||
|
||||
this->Target->GetType() == cmTarget::SHARED_LIBRARY ||
|
||||
this->Target->GetType() == cmTarget::MODULE_LIBRARY)
|
||||
{
|
||||
targetFullPathReal =
|
||||
this->Target->GetFullPath(this->ConfigName, false, true);
|
||||
targetFullPathPDB = this->Target->GetPDBDirectory(this->ConfigName);
|
||||
targetFullPathPDB += "/";
|
||||
targetFullPathPDB += this->Target->GetPDBName(this->ConfigName);
|
||||
}
|
||||
targetOutPathReal = this->Convert(targetFullPathReal.c_str(),
|
||||
cmLocalGenerator::START_OUTPUT,
|
||||
cmLocalGenerator::SHELL);
|
||||
targetOutPathPDB =
|
||||
this->Convert(targetFullPathPDB.c_str(),cmLocalGenerator::NONE,
|
||||
cmLocalGenerator::SHELL);
|
||||
@@ -660,6 +667,7 @@ cmMakefileTargetGenerator
|
||||
vars.RuleLauncher = "RULE_LAUNCH_COMPILE";
|
||||
vars.CMTarget = this->Target;
|
||||
vars.Language = lang;
|
||||
vars.Target = targetOutPathReal.c_str();
|
||||
vars.TargetPDB = targetOutPathPDB.c_str();
|
||||
vars.Source = sourceFile.c_str();
|
||||
std::string shellObj =
|
||||
|
||||
Reference in New Issue
Block a user