[CMake] CMAKE_SYSROOT and CMAKE_OSX_SYSROOT

Craig Scott craig.scott at crascit.com
Mon Mar 26 06:32:00 EDT 2018


On Mon, Mar 26, 2018 at 8:19 PM, James Weir <james.weir at wesio.co.uk> wrote:

> I’ve recently been experimenting with using Conan as a package manager for
> our C++ components, the good news is most things work really well but I’ve
> come across something which I’m not sure what the behaviour should be with
> regards to CMake. The problem occurs for me when building for Darwin
> targets (macOS and iOS), specifically around the behaviour of CMAKE_SYSROOT
> and CMAKE_OSX_SYSROOT.
>
> In short conan cmake builder sets CMAKE_SYSROOT but not CMAKE_OSX_SYSROOT
> and this causes me problems as I end up with multiple isysroot parameters
> given to the compiler, typically the host one trumps and so I end up with
> build errors due to trying to use includes from the macOS platform SDK
> rather than the appropriate iOS one. I can work around it by setting
> CMAKE_OSX_SYSROOT explicitly to to the same as CMAKE_SYSROOT and then
> everything works correctly, but could someone tell me why there are two
> SYSROOTs in the first place and what the expected behaviour should be?
>

While I can't answer the "why" part, my understanding is that CMAKE_SYSROOT
isn't usually set when building for any Apple platform, but you do
definitely want CMAKE_OSX_SYSROOT set as it is the one that controls the
SDK used, etc. The CMAKE_OSX_SYSROOT can be something as simple as
"iphoneos" rather than a full path to the actual SDK location (the need to
use a full path to an SDK should be rare, it's usually going to be more
flexible to specify just the basic family of SDK you want to use).

-- 
Craig Scott
Melbourne, Australia
https://crascit.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cmake.org/pipermail/cmake/attachments/20180326/4399dea2/attachment.html>


More information about the CMake mailing list