BUG: When executable output path is not set, we still need to generate the full path to the executable target.
This commit is contained in:
parent
9c1afa85e9
commit
2db5cc8c31
|
@ -1093,9 +1093,21 @@ void cmLocalUnixMakefileGenerator::OutputExecutableRule(std::ostream& fout,
|
||||||
std::string buildType = this->GetSafeDefinition("CMAKE_BUILD_TYPE");
|
std::string buildType = this->GetSafeDefinition("CMAKE_BUILD_TYPE");
|
||||||
buildType = cmSystemTools::UpperCase(buildType);
|
buildType = cmSystemTools::UpperCase(buildType);
|
||||||
std::string flags;
|
std::string flags;
|
||||||
std::string target = m_ExecutableOutputPath + name
|
|
||||||
+ cmSystemTools::GetExecutableExtension();
|
// Construct the full path to the executable that will be generated.
|
||||||
|
std::string target = m_ExecutableOutputPath;
|
||||||
|
if(target.length() == 0)
|
||||||
|
{
|
||||||
|
target = m_Makefile->GetCurrentOutputDirectory();
|
||||||
|
if(target.size() && target[target.size()-1] != '/')
|
||||||
|
{
|
||||||
|
target += "/";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
target += name;
|
||||||
|
target += cmSystemTools::GetExecutableExtension();
|
||||||
target = cmSystemTools::ConvertToOutputPath(target.c_str());
|
target = cmSystemTools::ConvertToOutputPath(target.c_str());
|
||||||
|
|
||||||
std::string objs = "$(" + this->CreateMakeVariable(name, "_SRC_OBJS") + ") ";
|
std::string objs = "$(" + this->CreateMakeVariable(name, "_SRC_OBJS") + ") ";
|
||||||
std::string depend = "$(";
|
std::string depend = "$(";
|
||||||
depend += this->CreateMakeVariable(name, "_SRC_OBJS")
|
depend += this->CreateMakeVariable(name, "_SRC_OBJS")
|
||||||
|
@ -1189,6 +1201,21 @@ void cmLocalUnixMakefileGenerator::OutputExecutableRule(std::ostream& fout,
|
||||||
target.c_str(),
|
target.c_str(),
|
||||||
depend.c_str(),
|
depend.c_str(),
|
||||||
commands);
|
commands);
|
||||||
|
|
||||||
|
// If there is no executable output path, add a rule with the
|
||||||
|
// relative path to the executable. This is necessary for
|
||||||
|
// try-compile to work in this case.
|
||||||
|
if(m_ExecutableOutputPath.length() == 0)
|
||||||
|
{
|
||||||
|
target = name;
|
||||||
|
target += cmSystemTools::GetExecutableExtension();
|
||||||
|
target = cmSystemTools::ConvertToOutputPath(target.c_str());
|
||||||
|
this->OutputMakeRule(fout,
|
||||||
|
comment.c_str(),
|
||||||
|
target.c_str(),
|
||||||
|
depend.c_str(),
|
||||||
|
commands);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue