Delivering an xcode framework with other dependencies - c++

We are trying to release an iOS version of our library and are planning on delivering it as a compiled static framework. Using Xcode the framework and test app we have are compiling successfully and running fine.
The question is: What is the best way to deliver it?
Our library is dependent on some other opensource frameworks, and we also want to ship a test app with the framework to show how to actually use the library properly.
Should we use an umbrella framework? Apple suggests "Don't Create Umbrella Frameworks" (http://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/BPFrameworks/Concepts/CreationGuidelines.html)
Should we just deliver a zip that has our framework as well as all the frameworks we're dependent on and just tell the clients that they have to include those frameworks in their projects?
What's the best way to include the test app?
Thanks in advance!

Take a look at CocoaPods as a means to manage the dependencies (especially if those dependencies are open-source).
https://github.com/CocoaPods/CocoaPods

I would include the required frameworks with your compiled framework with the exception of frameworks that come standard with the iOS SDK. Most every framework is going to rely on Foundation and UIKit, those are frameworks that will most likely already be included. Anything else they won't have access to, include with your framework you send over.

Related

How to integrate further JS dependencies in ZURB FOUNDATION project?

I'm using the ZURB Template (ZURB foundation 6.4).
I want to use dropdown menus and the like, which require the integration of further JS dependencies.
Here is the official Documentation:
https://foundation.zurb.com/sites/docs/dropdown-menu.html
The following is important for me:
The following files must be included in your JavaScript to use this plugin:
foundation.core.js
foundation.dropdownMenu.js
With utility library foundation.util.keyboard.js
With utility library foundation.util.box.js
With utility library foundation.util.nest.js
With utility library foundation.util.touch.js
Now I dont really know where I have to do these inclusions, and how.
I already integrated a third party plugin into my project, chart.js, but this is obviously a "native" plugin by foundation and I dont know how to do this.
In which file do I have to make these additions, and with what syntax?
In the app.js, they already use a mixture of ES6 and CommonJS for getting Jquery to run, because the hoisting behavior of ES6 would cause problems.
However, this doesn't really make things easier for me and it makes me wonder even more what I have to do to set this up ^^
See https://github.com/foundation/foundation-zurb-template/blob/master/src/assets/js/app.js and the explicit-pieces file for an example.

Sharing code between a dot42 project and a mono desktop project

The idea is to share code between a desktop app using Mono and a dot42 app. So my question is: Is there any way to import a Portable Class Library or even a common library in a dot42 ? If not, is there any way to share code at all between them ?
Thanks.
A dot42 project is either a Visual Studio or SharpDevelop project. There is nothing preventing you to add a class library project to your solution consisting of the same C# source code that is used in your Mono project.
The .NET types are implemented on top of the Android API. For example, the .NET Dictionary class is implemented as a wrapper of java.util.Map and System.String as a wrapper of java.lang.String. In other words, we take the API from .NET but the implementation from Java. This is in contrast to Mono.
When you refer to .NET types and compile your dot42 project to an APK, the .NET types compile to a minimum amount of wrapper DEX code that invokes the Android framework. It therefore does not require an extra runtime and makes the APKs really small.
Here is the API reference of all .NET types that are currently supported (work in progress):
http://docs.dot42.com/Reference/NS.System
We are working on adding support for Portable Class Libraries.
Disclosure: I work at dot42

Build MonoTouch .NET libraries on Windows

I have a project of which I want to develop (and build/release to internal nuget) on Windows. There are multiple versions of my assembly (NET40, NET20, etc) that are created as part of my build process.
I have a new project that wishes to use my libraries on Mono and MonoTouch. Is it possible to build libraries on Windows that are ready to run on MonoTouch/MAC? Note that I do not wish to program against any MonoTouch.dll or Apple/iOS specific libraries. My assemblies are strictly .NET libraries.
Is changing my target framework to .NET 4.0 "Client Profile" sufficient to get support on Mono platforms (including MonoTouch/iOS)?
You can use portable class library's to do this. there is a great article on how to get this set up.
It is quite easy to get set up thanks to the great write up by #slodge on twitter.

How to use a framework in NetBeans

I'm trying to use a framework in NetBeans (Mac OSX).
The framework is qwt and it resides as qwt.framework in /Library/Frameworks.
To get a project going and using this framework I did two things in project settings:
1) Added a link option '-framework qwt'
2) Added include directory '/Library/Frameworks/qwt.framework/Headers'
This gets thing going, and programmes successfully compile and run, but I'm wondering if this is the correct way to utilise a framework in NetBeans. I guess I was hoping I could just add the framework somewhere, and not have to worry about the includes as they'd be picked up automatically.
Can anyone provide advice on a more efficient/correct way to use a framework in NetBeans?
Thanks
Pete
After doing a bit of google research, it appears there's no simpler way to utilise a framework in NetBeans than do the above steps ie. a) add a link option '-framework xxx' and b) add the include directory from the framework, which resides in xxx.framework/Headers (usually). XCode and QtCreator have options to add a framework directly, but it appears NetBeans doesn't have this option. Hope these steps are useful to someone out there wanting to use NetBeans and frameworks. (I prefer NetBeans over QtCreator to make Qt projects as I find its debugging facilities and general IDE better to use.)
Pete

Static Framework in iOS and linking

I have an xcode workspace which is set up with some project libraries which are dependent on Boost 1_49 (built as an iOS framework), a static framework (a Fake Framework from https://github.com/kstenerud/iOS-Universal-Framework) and then a test app which uses the static framework.
The test app in addition uses boost.
I wanted to do some tests to see if it was possible to have the test app working on a different version of boost than the framework. This way we could deliver the framework as a standalone framework without having any restrictions on the version of boost that needs to be used in an application that is using our framework.
As such, I set up the test app to use boost 1_48 and the framework to use 1_49. I have it set up so that all of the projects which use boost are not set link the boost framework into the binary, and the framework project I have doesn't actually have boost referenced in it at all; it only has references to all the .a libs generated by its dependencies.
ProjectA
- Boost.framework 1_49
ProjectB
MyFramework
- ProjectA.a
- ProjectB.a
TestApp
- MyFramework.framework
- Boost.framework 1_48
I then added some code in both the framework and the test app to print out the boost version. Both places printed out version 1_49, and not 1_48. In addition, I tried to add some code in the test app to step into boost (just getting the current time for example), and the xCode debugger took me into the boost version contained in ProjectA, and not into the boost version contained in the TestApp.
What is going on with the linking and how can I get the application to only use the version of boost included in the TestApp?
Thanks,
Liron
Seems that the problem was that some other libraries in the application were also linking in Boost 1.49, so even though I thought I was using 1.48, 1.49 was there as well. Oh well.