The Boost Graph Library is a header-only library and does not need to be built to be used.
it contains some pre-made functions that I want for my iOS application:
dijkstra_shortest_paths
astar_search
However, Boost is not officially supported on iOS (or Android) due to lack of regression testing, and I'm not experienced enough with either Boost or iOS to be comfortable testing it.
Is anyone using Boost.Graph on iOS, and if so is it stable?
Yes, most definitely it's stable.
Apple's LLVM compiler (which is what you should be using for iOS apps) is one of the most C++11 compliant compilers available today, and as such can compile and run boost with absolutely no issues.
Not to mention the fact that iOS is also fully POSIX compliant, which makes most frameworks out there viable for use on iOS. When in doubt, try it and then if it doesn't work, come back and ask a question.
Leverage what is already there, and use it well!
As such boost libraries are stable, but Boost Graph libraries are failing on all darwin flavours (darwin- 4.4_0x intel- darwin- 12.0 intel- darwin- 11.1 darwin- 4.4)
http://www.boost.org/development/tests/release/developer/summary.html
May be you can try other alternatives, like LEDA (http://www.algorithmic-solutions.com/news/archive.htm)
Thanks.
Related
We are prebuilding some libraries (mainly with carthage) for some of our projects to reduce development times. These libraries are not updated very often, but we want to update our XCode versions pretty fast.
Now every time a new XCode brings a new swift version, we are seeing this incompatibility issue
File.swift:4:8: error: module compiled with Swift 5.3.2 cannot be imported by the Swift 5.4 compiler: /......./Debug-iphoneos/Alamofire.framework/Modules/Alamofire.swiftmodule/arm64-apple-ios.swiftmodule
How can I pre-build my dependencies in a way that a swift update wont affect it and I dont have to re-build the dependencies with every xcode update (I thought thats what ABI stability was for? How can I activate that?)
It sounds like you're misunderstanding what ABI stability enables. The main benefit is that it allows the OS to include only one version of the Swift standard library, and for all Swift binaries to share it. What you want is "module stability". From the docs on ABI stability:
ABI stability is about mixing versions of Swift at run time. What
about compile time? Right now, Swift uses an opaque archive format
called “swiftmodule” to describe the interface of a library, such as a
framework “MagicKit”, rather than manually-written header files.
However, the “swiftmodule” format is also tied to the current version
of the compiler, which means an app developer can’t import MagicKit if
MagicKit was built with a different version of Swift. That is, the app
developer and the library author have to be using the same version of
the compiler.
To remove this restriction, the library author needs a feature
currently being implemented called module stability. This involves
augmenting the opaque format with a textual summary of a module,
similar to what you see in Xcodeʼs “Generated Interface” view, so that
clients can use a module without having to care what compiler it was
built with.
This is not yet supported in any version of Swift.
This is to my requirement where, I would like to distribute libraries in binary form so as to protect intellectual property, license agreements etc. So use of Cocoapods, Carthage, SPM is ruled out to solve this.
Since ABI (application binary interface compatibility) is yet to be adapted or even announced by Apple,what is the best way to handle this.
Reading this nice insight about ABI and similar concern, it looks solution is ad-hoc -- to release binary libraries for all coming Xcode where Swift language is upgraded.
While not that similar question is there on stack Swift compatibility between versions for a library
Answer to my own question looks to go on with ad-hoc way and wait & watch until Switch 4.0 (may) to come and help.
I tried all other ways suggested on this (toggle SWIFT_VERSION settings and use of .xcconfig to set version ).
I need to obfuscate my iOS mostly C and Objective-C based app.
https://github.com/obfuscator-llvm/obfuscator/
llvm-obfuscator provide quite well solution without much additional work related. Obviously it will not prevent people from reversing it but at least it will lift a bar a little. App it self is designed good enough to protect few security related mechanisms but I would like to compile it with custom compiler to make it even more harder. But it raises few questions
If apple actually allow compiling with custom compilers
How it may affect speed and stability of application, o-llvm is
quite old 3.6.1 while apple already published their llvm 8.0 - not
sure what has been added improved or changed
o-llvm does not support latest xcode. I have abandoned idea and wrote my own obfuscation script which encrypts all variables and methods except Cocoa ones. It's not that good like o-llvm but it works great.
As part of a research project at school, I'm exploring mobile specific energy optimizations and am building infrastructure to test these optimizations on a popular mobile platform. Given my background in LLVM, I have decided to setup the testing infrastructure around the iOS platform. I thought that since Xcode already uses LLVM under the hood, it should be easy to integrate a copy of LLVM compiled from source into the Xcode toolchain, but I haven't been able to find an option to accomplish it in Xcode yet. (I'm new to OSX and haven't worked with Xcode before)
Am I overlooking anything, or is such an integration not supported out of the box in Xcode?
It's for obfuscater-llvm, but it should work for a "normal" llvm:
https://github.com/obfuscator-llvm/obfuscator/wiki/Installation#integration-into-xcode
Are the development environments the same? Does iPad support Java development?
For developing for iMac and iPad you can use Xcode for both. The project types will differ though.
I wouldn't worry about Java if you are working on the Apple platforms. Use Objective-C instead.
For Mac desktop you'll typically use the NSFoundation and the Cocoa frameworks. For the mobile devices you'll use the NSFoundation and UIKit frameworks. Notice that basic data types reuse the same framework (NSFoundation) but the frameworks for the GUIs are different. What this means is that you can create common code if you are only using NSFoundation. But you won't be able to use the same code for working with GUIs. This makes sense as the way GUIs work for desktop and mobile are very different.
The iPad only supports C++, Objective-C, and JavaScript. It's in the developer agreement. Also, on the iPad you will probably be using the cocoa touch framework which is different from the cocoa interface on Macs.
You can use Apple's XCode IDE to develop applications for both Mac OS X and the iOS platforms. I do not have a Mac, so I cannot give you much more insight as to if there are any differences when coding for one device or another, though I would imagine an app could be made fairly portable.
Unfortunately, Java is not supported on the iPad, and probably never will. The reasoning is the same as the reasoning Apple decided not to include Flash.
I hope this helps.
You can use XCode/Objective-C for both, but at least the user interface code would be completely different. You may be able to share some backend code and libraries.
Java is not supported on the iPad. You are down to C/C++/Objective-C and JavaScript.