Toolchain-ID¶
Second level of customization. Compiler and flags.
Each build can be run with different toolchains. In general the result is
a completely different root directory (containing (lib/include). For example on
Windows you can simultaneously build Visual Studio (32/64), NMake, Cygwin and
MinGW projects, on Linux GCC/Clang, on Mac Xcode, Makefile, iOS. Or choose
various clang tools like static analyzer/sanitizers and other platforms like
Android/Raspberry Pi. Each toolchain file will be forwarded to external project.
This means, if you create a toolchain with compiler g++ and flag -std=c++11 all
dependent projects will be built by g++ -std=c++11. Information about
toolchain has some internal representation (toolchain.info). As identifier
(ID) the first 7 digits of the SHA1 hash of this file are used.
The toolchain file is the only way to apply global settings for 3rd party projects in Hunter.
Only CMAKE_TOOLCHAIN_FILE will be forwarded for all packages,
neither standard CMAKE_CXX_COMPILER/CMAKE_CXX_FLAGS nor custom variables
like ANDROID_FOO=boo will be applied globally. First reason is the simplicity
of forwarding logic, second reason is about distinguishing local and global
settings. E.g. if a user wants to set -Wall only for the local project he can use
CMAKE_CXX_FLAGS. If user wants to set -Wall globally then he can use
CMAKE_TOOLCHAIN_FILE.
| Hunter-ID 1eae623 |
| Toolchain-ID | |||
|---|---|---|---|
d46ea0b |
Working directory | ${HUNTER_ROOT}/_Base/1eae623/d46ea0b/... |
|
| Compiler | Flags | ||
gcc |
|||
c018e63 |
Working directory | ${HUNTER_ROOT}/_Base/1eae623/c018e63/... |
|
| Compiler | Flags | ||
clang |
|||
c39da39 |
Working directory | ${HUNTER_ROOT}/_Base/1eae623/c39da39/... |
|
| Compiler | Flags | ||
clang |
-std=c++11 |
||
7450099 |
Working directory | ${HUNTER_ROOT}/_Base/1eae623/7450099/... |
|
| Compiler | Flags | ||
arm-linux-androideabi-g++ |
-march=armv7-a |
||
2d935ea |
Working directory | ${HUNTER_ROOT}/_Base/1eae623/2d935ea/... |
|
| Compiler | Flags | ||
clang |
-fsanitize=thread |
||
Message in logs:
-- [hunter] [ Hunter-ID: 1eae623 | Toolchain-ID: d46ea0b | Config-ID: ... ]
-- [hunter] [ Hunter-ID: 1eae623 | Toolchain-ID: c018e63 | Config-ID: ... ]
-- [hunter] [ Hunter-ID: 1eae623 | Toolchain-ID: c39da39 | Config-ID: ... ]
Examples on GitHub
CGold
Polly
Simple toolchains¶
Building with -fPIC:
# toolchain.cmake
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
Building with -std=c++11:
# toolchain.cmake
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED YES)