@ -386,6 +386,7 @@ void cmGlobalXCodeGenerator::CreateReRunCMakeFile(cmLocalGenerator* root)
cmSystemTools : : MakeDirectory ( m_CurrentReRunCMakeMakefile . c_str ( ) ) ;
m_CurrentReRunCMakeMakefile + = " /ReRunCMake.make " ;
cmGeneratedFileStream makefileStream ( m_CurrentReRunCMakeMakefile . c_str ( ) ) ;
makefileStream . SetCopyIfDifferent ( true ) ;
makefileStream < < " # Generated by CMake, DO NOT EDIT \n " ;
makefileStream < < " CMakeFiles/cmake.check_cache: " ;
for ( std : : vector < std : : string > : : const_iterator i = lfiles . begin ( ) ;
@ -845,6 +846,7 @@ cmGlobalXCodeGenerator::AddCommandsToBuildPhase(cmXCodeObject* buildphase,
{
return ;
}
makefileStream . SetCopyIfDifferent ( true ) ;
makefileStream < < " # Generated by CMake, DO NOT EDIT \n " ;
makefileStream < < " # Custom rules for " < < target . GetName ( ) < < " \n " ;
@ -1968,7 +1970,7 @@ cmGlobalXCodeGenerator::CreateXCodeDependHackTarget(
m_CurrentXCodeHackMakefile . c_str ( ) ) ;
return ;
}
makefileStream . SetCopyIfDifferent ( true ) ;
// one more pass for external depend information not handled
// correctly by xcode
makefileStream < < " # DO NOT EDIT \n " ;
@ -1986,8 +1988,8 @@ cmGlobalXCodeGenerator::CreateXCodeDependHackTarget(
t - > GetType ( ) = = cmTarget : : MODULE_LIBRARY )
{
makefileStream < < " \\ \n \t "
< < this - >
ConvertToRelativeForMake ( this - > GetTargetFullPath ( target - > GetcmTarget ( ) ) . c_str ( ) ) ;
< < this - > AddConfigDir ( this - >
ConvertToRelativeForMake ( this - > GetTargetFullPath ( target - > GetcmTarget ( ) ) . c_str ( ) ) . c_str ( ) ) ;
}
}
makefileStream < < " \n \n " ;
@ -2005,7 +2007,9 @@ cmGlobalXCodeGenerator::CreateXCodeDependHackTarget(
{
if ( emitted . insert ( * d ) . second )
{
makefileStream < < this - > ConvertToRelativeForMake ( d - > c_str ( ) ) < < " : \n " ;
makefileStream < <
this - > AddConfigDir ( this - > ConvertToRelativeForMake ( d - > c_str ( ) ) . c_str ( ) )
< < " : \n " ;
}
}
}
@ -2026,20 +2030,49 @@ cmGlobalXCodeGenerator::CreateXCodeDependHackTarget(
{
std : : vector < cmStdString > const & deplibs = target - > GetDependLibraries ( ) ;
std : : string tfull = this - > GetTargetFullPath ( target - > GetcmTarget ( ) ) ;
makefileStream < < this - > ConvertToRelativeForMake ( tfull . c_str ( ) ) < < " : " ;
makefileStream < < this - > AddConfigDir (
this - > ConvertToRelativeForMake ( tfull . c_str ( ) ) . c_str ( ) ) < < " : " ;
for ( std : : vector < cmStdString > : : const_iterator d = deplibs . begin ( ) ;
d ! = deplibs . end ( ) ; + + d )
{
makefileStream < < " \\ \n \t " < < this - > ConvertToRelativeForMake ( d - > c_str ( ) ) ;
makefileStream < < " \\ \n \t " < <
this - > AddConfigDir (
this - > ConvertToRelativeForMake ( d - > c_str ( ) ) . c_str ( ) ) ;
}
makefileStream < < " \n " ;
makefileStream < < " \t /bin/rm -f "
< < this - > ConvertToRelativeForMake ( tfull . c_str ( ) ) < < " \n " ;
< <
this - > AddConfigDir (
this - > ConvertToRelativeForMake ( tfull . c_str ( ) ) . c_str ( ) )
< < " \n " ;
makefileStream < < " \n \n " ;
}
}
}
//----------------------------------------------------------------------------
std : : string
cmGlobalXCodeGenerator : : AddConfigDir ( const char * d )
{
if ( m_XcodeVersion = = 15 )
{
return std : : string ( d ) ;
}
std : : string dir = d ;
if ( cmSystemTools : : FileExists ( d ) )
{
return dir ;
}
std : : string : : size_type pos = dir . rfind ( " / " ) ;
if ( pos = = dir . npos )
{
return dir ;
}
std : : string ret = dir . substr ( 0 , pos ) ;
ret + = " /${CONFIGURATION} " ;
ret + = dir . substr ( pos ) ;
return ret ;
}
//----------------------------------------------------------------------------
void
cmGlobalXCodeGenerator : : OutputXCodeProject ( cmLocalGenerator * root ,