Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
CMake
CMake
Commits
8045e171
Commit
8045e171
authored
Mar 13, 2012
by
David Cole
Committed by
Brad King
Mar 19, 2012
Browse files
Pre-compute object file names before Xcode generation
parent
247a1324
Changes
2
Hide whitespace changes
Inline
Side-by-side
Source/cmGlobalXCodeGenerator.cxx
View file @
8045e171
...
...
@@ -19,6 +19,7 @@
#include
"cmComputeLinkInformation.h"
#include
"cmSourceFile.h"
#include
"cmCustomCommandGenerator.h"
#include
"cmGeneratorTarget.h"
#include
<cmsys/auto_ptr.hxx>
...
...
@@ -3611,3 +3612,51 @@ bool cmGlobalXCodeGenerator::IsMultiConfig()
// Newer Xcode versions are multi config:
return
true
;
}
//----------------------------------------------------------------------------
void
cmGlobalXCodeGenerator
::
ComputeTargetObjects
(
cmGeneratorTarget
*
gt
)
const
{
// Count the number of object files with each name. Warn about duplicate
// names since Xcode names them uniquely automatically with a numeric suffix
// to avoid exact duplicate file names. Note that Mac file names are not
// typically case sensitive, hence the LowerCase.
std
::
map
<
cmStdString
,
int
>
counts
;
for
(
std
::
vector
<
cmSourceFile
*>::
const_iterator
si
=
gt
->
ObjectSources
.
begin
();
si
!=
gt
->
ObjectSources
.
end
();
++
si
)
{
cmSourceFile
*
sf
=
*
si
;
std
::
string
objectName
=
cmSystemTools
::
GetFilenameWithoutLastExtension
(
sf
->
GetFullPath
());
objectName
+=
".o"
;
std
::
string
objectNameLower
=
cmSystemTools
::
LowerCase
(
objectName
);
counts
[
objectNameLower
]
+=
1
;
if
(
2
==
counts
[
objectNameLower
])
{
// TODO: emit warning about duplicate name?
}
gt
->
Objects
[
sf
]
=
objectName
;
}
const
char
*
configName
=
this
->
GetCMakeCFGIntDir
();
std
::
string
dir
=
this
->
GetObjectsNormalDirectory
(
this
->
CurrentProject
,
configName
,
gt
->
Target
);
if
(
this
->
XcodeVersion
>=
21
)
{
dir
+=
"$(CURRENT_ARCH)/"
;
}
else
{
#ifdef __ppc__
dir
+=
"ppc/"
;
#endif
#ifdef __i386
dir
+=
"i386/"
;
#endif
}
gt
->
ObjectDirectory
=
dir
;
}
Source/cmGlobalXCodeGenerator.h
View file @
8045e171
...
...
@@ -206,6 +206,8 @@ protected:
std
::
vector
<
cmXCodeObject
*>
XCodeObjects
;
cmXCodeObject
*
RootObject
;
private:
void
ComputeTargetObjects
(
cmGeneratorTarget
*
gt
)
const
;
std
::
string
GetObjectsNormalDirectory
(
const
std
::
string
&
projName
,
const
std
::
string
&
configName
,
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment