Hi CMake ML,
I am quite new to the topic of making toolchain files. However I need to
build a not so trivial application for iOS and I want to do it with
CMake, and if possible walk toward an official support of iOS in CMake.
I have looked a bit to the Android toolchains, and I have to say I found
those quite complicated as a first reading :)
The target application I am building uses Qt and Boost.
So far, I have managed to have an IOS toolchain file that is generating
a looking good XCode project, that I can compile properly (up until
signing).
I can share the toolchain file: it is a collection of things I have
found on the internet, but trimmed from what I think was not necessary.
It is still in a not so nice state, but I am currently cleaning it.
There are things that I think are weird though:
* I need to have:
```
set(CMAKE_FIND_ROOT_PATH
${CMAKE_IOS_DEVELOPER_ROOT}
${CMAKE_IOS_SDK_ROOT}
${CMAKE_PREFIX_PATH}
/path/to/boost_1_64_0_build/install
CACHE string "iOS find search path root")
```
where this path is hard coded, and points to the fat static libraries
prefix path of boost. If I remove this path, FindBoost does not find the
boost libraries anymore (of course I am passing BOOST_ROOT). In
addition, I have this:
```
set (CMAKE_SYSTEM_FRAMEWORK_PATH
${CMAKE_IOS_SDK_ROOT}/System/Library/Frameworks
${CMAKE_IOS_SDK_ROOT}/System/Library/PrivateFrameworks
${CMAKE_IOS_SDK_ROOT}/Developer/Library/Frameworks
)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
```
this looks ok to me, as we are cross compiling.
Is this a problem of FindBoost, or the combinations of the options that
are not ok?
* I need to add:
```
set(CMAKE_MACOSX_BUNDLE YES)
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO")
```
and this comes from https://public.kitware.com/Bug/view.php?id=15329 .
As I understand it, this is a problem of try_compile: as signing of
application is required for generating a binary for iOS, this one fails
very early when CMake discovers the capabilities of the compiler. Some
people made a workaround by short-cutting the compiler checks, which is
to me a wrong direction to take. As mentioned in this ticket, the right
solution would be that the try_compile commands not to require signing
of the binaries (or sthg similar).
This is explained here: http://public.kitware.com/Bug/view.php?id=12288
* is this one https://cmake.org/Bug/view.php?id=12640 addressed?
* I am seeing exchanges concerning the IOS_INSTALL_COMBINED. Does this
has something to do with toolchain? What is meant by "installation" in
this case? Sorry for my naive question, but I do not understand the
workflow very well.
* how can I have unit tests of the toolchain in a CI fashion. Ideally, I
would like to have a target cross-compiled with this toolchain, and then
running the iPhoneSimulator, and check the result (return code, process,
command whatever).
Does anyone have experience with this?
Thanks,
Raffi
--
Powered by www.kitware.com
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Kitware offers various services to support the CMake community. For more
information on each offering, please visit:
CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers