On Tue, Jan 13, 2009 at 11:16 AM, Chris Cannam
<[email protected]> wrote:
> Now I _can_ confirm your findings!  Investigating...

OK, it's simple enough.  The CMake build compiles data.cpp to data.o,
then rolls that up into a static library archive
(libRosegarden_rc_data.a) and adds that to the link line.

However, symbols from a static library are only pulled in to the
resulting executable if they were undefined at the point where the
static library appeared on the link line.  Since none of the
Rosegarden code actually refers to the resource data (it's referred to
only from subsequent Qt libraries), the linker does nothing with this
static library and so the data is not included in the executable.

The solution is simply to link with data.o rather than rolling it into
an archive.  How to accomplish that with CMake, I don't know.

If that isn't possible, we can work up a hack that means we don't need
to link explicitly against it, e.g. by including data.cpp into another
file (it would have to be a file that also contains something that is
referred to from elsewhere, etc, so that we don't just run into the
same problem again).  That would be a bit weird, though -- I'd prefer
it if we could get CMake to do it right.  We're going to have to get
it to run the rcc _somehow_ as well, since I don't want to be
effectively distributing all the data twice by including data.cpp in
our tarball.


Chris

------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
Rosegarden-devel mailing list
[email protected] - use the link below to unsubscribe
https://lists.sourceforge.net/lists/listinfo/rosegarden-devel

Reply via email to