"non standalone app bundle" builds on Mac

Jaroslaw Staniek staniek at kde.org
Tue Nov 8 12:20:37 GMT 2016


On 8 November 2016 at 13:09, René J.V. Bertin <rjvbertin at gmail.com> wrote:

> On Tuesday November 08 2016 12:17:23 Jaroslaw Staniek wrote:
>
> >
> > I hope special cases in a cmake buildsystem would not be a problem. I've
> > worked with cmake-based build systems that support Makefiles generator
> > (JOM/NMake) and VS generators in the same cmake scripts. The later is a
> > multi-generator so it adds so much extra work since it's different than
> the
> > Makefiles gen. For now I have not checked if the current xCode generator
> is
> > as complex in use as the VS in this regard. Thoughts?
>
> I have no idea how it compares to the VS generator. It's been improved
> recently and I've checked a few projects, but haven't gone much beyond
> that. I think manual tuning of the project would be required, esp. if you
> want to do things that you cannot really achieve directly with CMake.
>
> > or large apps were packaged using scripts. I'd appreciate some info on
> how
> > do you see the current situation (of xCode cmake generator?) if we don't
> > want to require manual mouse clicks in xCode to prepare builds.
>
> See above, Xcode projects are like MSVC projects in that you maintain them
> manually ("what you see is all you get" ...). I actually have little
> experience with the current Xcode versions as I've drifted away from
> development requiring its use since I'm no longer using OS X 10.6 .
> However, as with MSVC there is usually little more you have to do than
> simply adding new files to targets.
> Once you have a project though you can build it from the commandline,
> there's an xcodebuild utility that knows quite a few tricks for that.
>
> >
>
> > >
> >
> > Nope, really, clang shall build them ​just fine and they should work;
> only
> > plugin paths are most probably something to test if we want to use
> non-Unix
> > approach to paths.
>
> Yes, QStandardPaths is a problem. Qt folks may disagree, but I have the
> impression it wasn't designed with much regard for the potential special
> needs of complex software like KDE's on platforms that don't use
> XDG-compliant locations (that's what we're really talking about here).
> It's also a pity that there is nothing (in the ECM for instance) that
> determines the install locations from the QStandardPath locations, that
> should remove the need for a lot of hacking and additional testing.
>
> > ​As programming frameworks, so programmers can pick up them as they pick
> up
> > parts of KF5 or some other extra Qt modules for they project. In a
>
> I repeat, "framework" is a term that's already taken in the Mac universe :)
>

​I know that so let's use 'Mac Frameworks' term for that :)
​


> One habit that I see which stands in the way of building KF5 libraries
> (including those with framework status) as a Mac framework is the way
> headers are included.
> KDE software mostly uses the form
>
> #include <Foo>
>
> whereas on Mac you'd include the main header of a Foo.framework with
> (presuming it's not ObjC)
>
> #include <Foo/Foo>
>

Maybe that can be seen as misfeature of Xcode and related tools because a
point <Foo/Foo> is that the header is _silently_ found even if you're not
linking against respective library that the headers belong too. Then
linking errors (or worse, runtime errors) happen. With <Foo> you're just
sure that if you used the cmake tools that find libraries (packages) for
you, you get much nicer preprocessor error if you missed certain entry in
target_link_libraries().


> this tells the compiler to search for {/System,}/Library/Frameworks/Foo.frameworks/Headers/Foo
> in addition to /usr{/local,}/include/Foo/Foo plus any in other paths you
> may have specified. You'd have to add the individual .framework/Headers
> directories to include them if you don't use the "rich" specification. Not
> the easiest thing to do in Xcode (the interface is a bit clunky).
>
> A bit of a missed chance: most all of KF5's framework headerfiles install
> in a way that would make them accessible using the Foo/Foo notation...
>
> R
>


​I'd like to see the headers portable across platforms...


-- 
regards, Jaroslaw Staniek

KDE:
: A world-wide network of software engineers, artists, writers, translators
: and facilitators committed to Free Software development - http://kde.org
Calligra Suite:
: A graphic art and office suite - http://calligra.org
Kexi:
: A visual database apps builder - http://calligra.org/kexi
Qt Certified Specialist:
: http://www.linkedin.com/in/jstaniek
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/calligra-devel/attachments/20161108/f570a658/attachment.htm>


More information about the calligra-devel mailing list