corinthia-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Peter Kelly <>
Subject Re: Static library for iOS
Date Sun, 22 Mar 2015 11:36:58 GMT
Hi Antonio,

This is actually an interesting question and in looking into this I realised it doesn’t
currently work properly with our current build configuration. For my own iOS app I actually
still maintain a separate Xcode project file (for historical reasons). I’ve just gone through
the process of trying to use a CMake-generated project file, and here’s what I had to do:

1. First create the Corinthia.xproject file by running CMake:

    mkdir ~/code/incubator-corinthia/build
    cd ~/code/incubator-corinthia/build
    cmake -G Xcode ..
    open Corinthia.xcodeproj

2. Once Xcode is open, there should be a yellow warning symbol shown near the center-top of
the window. Click this, and then on the “Validate Project Settings” warning, and click
“Perform Changes” (this apples the “automatically select architectures” setting).
Say no if it subsequently asks you about snapshots.

3. In the view where it has the list containing the Corinthia project followed by all the
targets (ALL_BUILD, ZERO_CHECK, DocFormats etc.), select the Corinthia project, and the “Build
Settings” near the top of the window. Change Supported Platforms to “iOS”, and Base
SDK to “Latest iOS (iOS 8.2)”. The architectures should be listed as “Standard architectures
(armv7, arm64)”, at least if you have an iOS device plugged into your machine.

4. Delete the dftest, dfbuild, and dfutil targets. These are command-line tools which won’t
work on iOS and will cause errors while compiling.

5. Go to Product -> Build

This should compile everything without errors.

Now, to use this library in your iOS app:

6. Close the Corinthia project window, and then open your app’s project file.

7. In the left-most pane, click on your app project, and then drag Corinthia.xcodeproj on
top of it, so the blue line appears just underneath it. This will add it as a sub-project.

8. Under “Build Phases" for your app project, go to “Link Binary with Libraries”, click
add, then “add other”,  browse to the incubator-corinthia/build/lib directory, and select
libDocFormats.a. Then add libz.dylib, libxml2.dylib, and ImageIO.framework.

9. Under “Build Settings” for your app project, go to “Header Search Paths”, and add
the following two absolute paths (adjusting for the location where you have the repository):


10. In the .m source file where you want to call the library API functions, add the following
two lines:

    #import <DFPlatform.h>
    #import <DocFormats/DocFormats.h>

11. Now you should be able to make API calls like the following:


Summary: I realise this is a *lot* to do, and there’s plenty of opportunities to do the
wrong option here. We need to make this a lot smoother, ideally supporting this use case in
the CMake-generated project files (which presently cater for OS X but not iOS). This is actually
the first time I’ve tried building the library on iOS without using my existing, separately-maintained
project file, and in going through the process I’ve realised how complex it is in practice.

Let me know how you go with these instructions; if you get stuck I’ll try to help further.

Dr Peter M. Kelly

PGP key: <>
(fingerprint 5435 6718 59F0 DD1F BFA0 5E46 2523 BAA1 44AE 2966)

> On 19 Mar 2015, at 6:41 pm, António Soares <> wrote:
> Hi there,
> I'm a student doing master in Informatics engineer and I would like to
> implement a type of your DFConverter in my iOS app. After trying to compile
> your work with xcode on MACOSX 10.10 I finally had success compiling,
> before that it failed when I used the UNIX option because didn't found
> tree.h header.
> Now i'm trying to do a static library with a public header that i can use
> in my iOS project.
> Is possible to get any kind of documentation or instruction how to do that?
> I had many problema compiling a static library or framework in the pass
> days.
> Any help would be appreciated.
> Thanks for your time,
> António Soares

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message