本文整理汇总了C++中LinkerConfig::setCodeGenType方法的典型用法代码示例。如果您正苦于以下问题:C++ LinkerConfig::setCodeGenType方法的具体用法?C++ LinkerConfig::setCodeGenType怎么用?C++ LinkerConfig::setCodeGenType使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LinkerConfig
的用法示例。
在下文中一共展示了LinkerConfig::setCodeGenType方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: parseOutput
/// configure the output filename
bool OutputFormatOptions::parseOutput(Module& pModule, LinkerConfig& pConfig)
{
if (true == m_Shared || true == m_PIE) {
// -shared or -pie
m_FileType = mcld::LinkerConfig::DynObj;
}
else if (true == m_Relocatable) {
// partial linking
m_FileType = mcld::LinkerConfig::Object;
}
else if (mcld::LinkerConfig::Binary == m_OFormat) {
// binary output
m_FileType = mcld::LinkerConfig::Binary;
}
pConfig.setCodeGenType(m_FileType);
std::string output_filename(m_OutputFilename.native());
if (m_OutputFilename.empty()) {
if (llvm::Triple::Win32 == pConfig.targets().triple().getOS()) {
output_filename.assign("_out");
switch (m_FileType) {
case mcld::LinkerConfig::Object: {
output_filename += ".obj";
break;
}
case mcld::LinkerConfig::DynObj: {
output_filename += ".dll";
break;
}
case mcld::LinkerConfig::Exec: {
output_filename += ".exe";
break;
}
case mcld::LinkerConfig::External:
break;
default: {
return false;
break;
}
} // switch
}
else {
if (mcld::LinkerConfig::Object == m_FileType ||
mcld::LinkerConfig::DynObj == m_FileType ||
mcld::LinkerConfig::Exec == m_FileType ||
mcld::LinkerConfig::External == m_FileType) {
output_filename.assign("a.out");
}
else {
return false;
}
}
} // end of if empty m_OutputFilename
pModule.setName(output_filename);
return true;
}