[cmake-developers] [CMake] dependencies of cross compiliations
Rolf Eike Beer
eike at sf-mail.de
Tue Dec 11 08:17:58 EST 2018
Eric Noulard wrote:
> When ones do cross compile for the host + one or several target a
> lighter
> "add_superbuild" API could be design. I'll try to think about it more
> thoroughly and do some proposal. Ideally we shouldn't need to provide
> many
> parameters beside the toolchain and a way to specify "the host build".
I guess putting the host-build location in the toolchain file could be
one way
to just get it done. In case one has multiple builds that should share
one host
build then just set an absolute location, and if you don't it will be
below your
normal build directory.
There are just 2 things that scare me a bit off: we surely want a way to
break
that into smaller pieces so we can introduce it over multiple releases,
maybe even
as a tech-preview so we can break things if we see that we have not
taken a bigger
usecase in account, and I currently don't see the points to slice that
up.
And we really, really want a
.cmake_no_freaking_in_source_build_under_any_circumstances
or however we gonna call it, and we need that first. There has been
wasted enough time
with in-source builds, missing cleanups and all the weird side effects
in our industry
for decades, and sadly CMake hasn't stopped that nonsense entirely.
There are still
projects out there that can only build this way because they do some
assumptions on
where to pick up files, but for something that will end up mixed
cross/host build this
will never under any circumstances going to work.
I wonder if we can't just add it as extra argument to
cmake_minimum_required(), in a
way that you _have_ to specify ALLOW_IN_SOURCE_BUILD explicitely if you
require a version
newer than say 3.14, so anyone that is not explicitely requesting this
to work will
automagically end up in a "clean" setup. Of course we need to make sure
that no file is
written by CMake until that line is parsed (or any other command is
encountered). Or
simply do something similar when using toolchain files, which CMake can
detect before
even start parsing the main CMakeLists.txt.
Eike
More information about the cmake-developers
mailing list