I'm trying to build DLIB for an iOS project. Running the cmake
results in a libdlib.a
and a load of .o
files.
When I add the library to an Xcode project I get warning that the library hasn't been built for arm64
.
My question is two-part:
- How can I build DLIB for iOS (I tried
cmake **path_to_source** -DCMAKE_OSX_ARCHITECTURE="arm64"
but it caused loads of errors e.g. unknown type name '__uint32_t'; did you mean '__uint128_t'
)?
- What is the purpose of all the
.o
files that get built when you run cmake? Do I need to include them in an Xcode project?
I finally figured out how to do this:
Requirements
- X11 (on a mac you can just open the X11 app and if X11 isn't installed it'll take you to the download).
- Xcode
- cmake (you can use home-brew for that)
Steps
This will create a folder called dlib_build
in which you can find an Xcode project that compiles the library. In the build settings of that Xcode project you can set the build architecture and SDK for any Xcode supported OS you like!
EDIT:
You have to include a lot of custom compiler flags and 3rd party libraries to get dlib to work in a project. Check out the examples.xcproject
build settings.
To compliment RASS's answer, I am attaching screenshots showing how to change this to and from an iOS and OSX lib
After opening the project,
- Select the project file from the project navigator
- Select the dlib target all the way down the bottom
- Select 'Build Settings'
- Expand 'Base SDK' drop down
- Select either iOS or macOS (OSX)
I hope this helps some people out! gl
Rob Sanders and mylogon already show how to build dlib for ios, here is how to use it:
- add libdlib.a to project, and add path to library search paths
- add all source to include directory(do not add to project), and add path to header search paths.
- add accelerate framework, which contains blas symbols.
add preprocessor macros, from building settings, "custom compiler flag"/"other c flags". these macros make sure the header files match the lib.
-DDLIB_JPEG_SUPPORT
-DDLIB_NO_GUI_SUPPORT
-DNDEBUG
-DDLIB_USE_BLAS
-DDLIB_USE_LAPACK