[CMake] Specifying different compilers for subsets of a project

Chuck Atkins chuck.atkins at kitware.com
Thu Oct 16 14:32:13 EDT 2014


Hi George,


> The obvious way to compile front-end tools is to create another directory,
> e.g., "front-end-build" and run cmake therein to re-configure and build
> with a front-end compiler.
>

> However, since only a relatively small subset of the files needs to be
> compiled for the front-end, it is desirable to do this within the same build
>

This is a common case that occurs when cross compiling where certain
targets are used to generate files used in the rest of the build.  Using
different build directories is the typical way, but you can reduce the host
build as much a possible by creating a BuildTools or CrossTools custom
target with depends only on the targets needing to be build on the host
system. This way, you can build only the subset needed on the host and in
the cross-build, just point the host build directory.  This is how both VTK
and ParaView do it.

Trying to specify multiple compilers isn't so straight forward.  Consider
the entire platform that goes in to cross compiling: you have the entire
build toolset, but then you also have the entire find infrastructure that
needs to look in different places for includes and libraries.  There's an
entire stack of variables, tools, and settings that are needed to build on
a given platform and you would basically need a whole duplicate set
generated from a secondary configure run to make it work in the general
case.  This is what is effectively happening anyways in the two-builds
scenario.

- Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20141016/f303a306/attachment.html>


More information about the CMake mailing list