Re: Debug/Release Library Matching
Re: Debug/Release Library Matching
- Subject: Re: Debug/Release Library Matching
- From: Carsten G Pedersen <email@hidden>
- Date: Thu, 8 Sep 2005 11:33:50 +0200
So I tried following the procedure described
below except for the common build location which I'd really like to avoid.
I substituted that with letting the library search paths being governed
by the build configuration. And at first glance it seems to work but no
in fact it doesn't. Changing code in one of the library projects does trigger
a rebuild of the corresponding project when building the main project -
however that is all - the main project does not relink, so of course the
change made does not make its way to tha application. Do I really really
need a common build location for this to work?
Carsten
Chris Espinosa <email@hidden>
Sent by: xcode-users-bounces+carsten.pedersen=email@hidden
04/09/05 08:19
|
To
| Ben Weiss <email@hidden>
|
cc
| email@hidden
|
Subject
| Re: Debug/Release Library Matching |
|
On Sep 3, 2005, at 11:06 PM, Ben Weiss wrote:
> I'm porting an application from Codewarrior, which incorporates a
> static library that comes in both debug and release flavors
> (mylib_d.a, and mylib.a). How can I add these files to the respective
> debug and release build configurations in my project, such that the
> debug configuration links to mylib_d.a, and the release configuration
> links to mylib.a?
>
> XCode only seems to want to add the libraries to both configurations
> at once (or neither), but obviously I need to match up debug to debug
> and release to release. Any suggestions?
The best way to do this is to use a shared build folder between the
project that builds the static library and the project that builds its
clients. Both projects should have Debug and Release configurations
(the names are arbitrary, but should be the same in each project).
When you build the static library's Debug configuration, it will build
into $(SYMROOT)/Debug/mylib.a, and when you build Release, it will
build into $(SYMROOT)/Release/mylib.a. Note that the library names
are
the same but they're in per-configuration directories, much like
CodeWarior puts per-target intermediates into per-target directories.
Then drag the static library project and drop it into your app project.
When you disclose it, it will show that it builds foo.a. Drag
that
into the Link Binaries with Libraries build phase of your target.
Then when you build the Debug configuration of your app, it will use
the Debug build folder, and automatically pick up the Debug static
library, and the same for the Release configuration.
If you really want the files in the same place and named differently,
then you have to use separate targets for your Debug and Release
versions of your app (and probably use just one configuration). Add
the mylib_d.a static library to the Debug target and the mylib.a static
library to the Release target, just like in CodeWarrior.
Chris
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden