Collection of CMake toolchain files and scripts.
| Linux/OSX | Windows | 
|---|---|
Every toolchain defines compiler/flags and two variables:
- POLLY_TOOLCHAIN_NAME
- POLLY_TOOLCHAIN_TAG
First variable will be printed while processing file:
-- [polly] Used toolchain: Name of toolchain A
-- The CXX compiler identification is Clang 5.0.0
-- Check for working CXX compiler: /usr/bin/c++
-- [polly] Used toolchain: Name of toolchain A
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- [polly] Used toolchain: Name of toolchain A
-- Detecting CXX compiler ABI info - done
-- [polly] Used toolchain: Name of toolchain A
-- Configuring done
-- Generating done
-- Build files have been written to: ...
Second
variable coincide with toolchain file name and can be used to define CMAKE_INSTALL_PREFIX like:
set(CMAKE_INSTALL_PREFIX "${PROJECT_SOURCE_DIR}/_install/${POLLY_TOOLCHAIN_TAG}")In this case targets can coexist simultaneously:
 - Project\ -
            - CMakeLists.txt
            - sources\
            - documentation\
            - ...
            - _install\ -
                        - toolchain-A\
                        - toolchain-B\
                        - toolchain-C\
                        - ...
Note: This is a core idea of the tagged builds in hunter package manager.
Just define CMAKE_TOOLCHAIN_FILE variable:
> cmake -H. -B_builds/clang-libstdcxx -DCMAKE_TOOLCHAIN_FILE=${POLLY_ROOT}/clang-libstdcxx.cmake -DCMAKE_VERBOSE_MAKEFILE=ON
-- [polly] Used toolchain: clang / GNU Standard C++ Library (libstdc++) / c++11 support
-- The CXX compiler identification is Clang 5.0.0
-- Check for working CXX compiler: /usr/bin/c++
-- [polly] Used toolchain: clang / GNU Standard C++ Library (libstdc++) / c++11 support
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- [polly] Used toolchain: clang / GNU Standard C++ Library (libstdc++) / c++11 support
-- Detecting CXX compiler ABI info - done
-- Configuring done
-- Generating done
-- Build files have been written to: /.../_builds/make-debugTake a look at make output, you must see -stdlib=libstdc++ string:
> cmake --build _builds/clang_libstdcxx
/usr/bin/c++ -std=c++11 -stdlib=libstdc++ -o CMakeFiles/.../main.cpp.o -c /.../main.cpp
This is a python script that wrap cmake for you and automatically set:
- build directory for your toolchain. E.g. _builds/xcode,_builds/libcxx-Debug,_builds/nmake-Release
- local install directory. E.g. _install/vs-12-2013-x64,_install/libcxx
- start an IDE project (Xcode, Visual Studio) if option --openpassed
- run ctestafter the build done if option--testpassed
- run cpackafter the build done if option--packpassed
- create OS X/iOSframework if option--frameworkpassed (can be used for broken iOS framework creation on CMake)
Example of usage (also see polly.py --help):
- build Debug Xcode project:
- polly.py --toolchain xcode --config Debug(- _builds/xcode)
 
- build and test Release Makefile project with libcxx:- polly.py --toolchain libcxx --config Release --test(- _builds/libcxx-Release)
 
- install Debug Xcode project:
- polly.py --toolchain xcode --config Debug --install(- _builds/xcode,- _install/xcode)
 
See examples. Please read coding style and agreements before start looking through examples (may explain a lot). Take a look at the Travis config files: mac and linux, it's quite self-explanatory.
See CONTRIBUTING.md.