本文整理汇总了C++中Args::SetEscapeSlashesInResponseFile方法的典型用法代码示例。如果您正苦于以下问题:C++ Args::SetEscapeSlashesInResponseFile方法的具体用法?C++ Args::SetEscapeSlashesInResponseFile怎么用?C++ Args::SetEscapeSlashesInResponseFile使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Args
的用法示例。
在下文中一共展示了Args::SetEscapeSlashesInResponseFile方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: BuildArgs
// BuildArgs
//------------------------------------------------------------------------------
bool LibraryNode::BuildArgs( Args & fullArgs ) const
{
Array< AString > tokens( 1024, true );
m_LibrarianArgs.Tokenize( tokens );
const AString * const end = tokens.End();
for ( const AString * it = tokens.Begin(); it!=end; ++it )
{
const AString & token = *it;
if ( token.EndsWith( "%1" ) )
{
// handle /Option:%1 -> /Option:A /Option:B /Option:C
AStackString<> pre;
if ( token.GetLength() > 2 )
{
pre.Assign( token.Get(), token.GetEnd() - 2 );
}
// concatenate files, unquoted
GetInputFiles( fullArgs, pre, AString::GetEmpty() );
}
else if ( token.EndsWith( "\"%1\"" ) )
{
// handle /Option:"%1" -> /Option:"A" /Option:"B" /Option:"C"
AStackString<> pre( token.Get(), token.GetEnd() - 3 ); // 3 instead of 4 to include quote
AStackString<> post( "\"" );
// concatenate files, quoted
GetInputFiles( fullArgs, pre, post );
}
else if ( token.EndsWith( "%2" ) )
{
// handle /Option:%2 -> /Option:A
if ( token.GetLength() > 2 )
{
fullArgs += AStackString<>( token.Get(), token.GetEnd() - 2 );
}
fullArgs += m_Name;
}
else if ( token.EndsWith( "\"%2\"" ) )
{
// handle /Option:"%2" -> /Option:"A"
AStackString<> pre( token.Get(), token.GetEnd() - 3 ); // 3 instead of 4 to include quote
fullArgs += pre;
fullArgs += m_Name;
fullArgs += '"'; // post
}
else
{
fullArgs += token;
}
fullArgs.AddDelimiter();
}
// orbis-ar.exe requires escaped slashes inside response file
if ( GetFlag( LIB_FLAG_ORBIS_AR ) )
{
fullArgs.SetEscapeSlashesInResponseFile();
}
// Handle all the special needs of args
if ( fullArgs.Finalize( m_LibrarianPath, GetName(), CanUseResponseFile() ) == false )
{
return false; // Finalize will have emitted an error
}
return true;
}
示例2: BuildArgs
// BuildArgs
//------------------------------------------------------------------------------
bool LinkerNode::BuildArgs( Args & fullArgs ) const
{
PROFILE_FUNCTION
// split into tokens
Array< AString > tokens( 1024, true );
m_LinkerOptions.Tokenize( tokens );
const AString * const end = tokens.End();
for ( const AString * it = tokens.Begin(); it!=end; ++it )
{
const AString & token = *it;
// %1 -> InputFiles
const char * found = token.Find( "%1" );
if ( found )
{
AStackString<> pre( token.Get(), found );
AStackString<> post( found + 2, token.GetEnd() );
GetInputFiles( fullArgs, pre, post );
fullArgs.AddDelimiter();
continue;
}
// %2 -> OutputFile
found = token.Find( "%2" );
if ( found )
{
fullArgs += AStackString<>( token.Get(), found );
fullArgs += m_Name;
fullArgs += AStackString<>( found + 2, token.GetEnd() );
fullArgs.AddDelimiter();
continue;
}
// %3 -> AssemblyResources
if ( GetFlag( LINK_FLAG_MSVC ) )
{
found = token.Find( "%3" );
if ( found )
{
AStackString<> pre( token.Get(), found );
AStackString<> post( found + 2, token.GetEnd() );
GetAssemblyResourceFiles( fullArgs, pre, post );
fullArgs.AddDelimiter();
continue;
}
}
// untouched token
fullArgs += token;
fullArgs.AddDelimiter();
}
// orbis-ld.exe requires escaped slashes inside response file
if ( GetFlag( LINK_FLAG_ORBIS_LD ) )
{
fullArgs.SetEscapeSlashesInResponseFile();
}
// Handle all the special needs of args
if ( fullArgs.Finalize( m_Linker, GetName(), CanUseResponseFile() ) == false )
{
return false; // Finalize will have emitted an error
}
return true;
}