# cmake plugin

## cmake - CMake build element

This is a BuildElement implementation for using the CMake build system.

You will often want to pass additional arguments to the `cmake` program for specific configuration options. This should be done on a per-element basis by setting the `cmake-local` variable. Here is an example:

    variables:
      cmake-local: |
        -DCMAKE_BUILD_TYPE=Debug

If you want to pass extra options to `cmake` for every element in your project, set the `cmake-global` variable in your project.conf file. Here is an example of that:

    elements:
      cmake:
        variables:
          cmake-global: |
            -DCMAKE_BUILD_TYPE=Release

Here is the default configuration for the `cmake` element in full:

>     #  Licensed under the Apache License, Version 2.0 (the "License");
>     #  you may not use this file except in compliance with the License.
>     #  You may obtain a copy of the License at
>     #
>     #      http://www.apache.org/licenses/LICENSE-2.0
>     #
>     #  Unless required by applicable law or agreed to in writing, software
>     #  distributed under the License is distributed on an "AS IS" BASIS,
>     #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>     #  See the License for the specific language governing permissions and
>     #  limitations under the License.

>     # CMake default configuration

>     variables:

>       build-dir: _builddir

>       # Project-wide extra arguments to be passed to `cmake`
>       cmake-global: ''

>       # Element-specific extra arguments to be passed to `cmake`.
>       cmake-local: ''

>       # The cmake generator to use
>       generator: Ninja

>       cmake-args: |

>         -DCMAKE_VERBOSE_MAKEFILE=ON \
>         -DCMAKE_INSTALL_PREFIX:PATH="%{prefix}" \
>         -DCMAKE_INSTALL_LIBDIR:PATH="%{lib}" %{cmake-global} %{cmake-local}

>       cmake: |

>         cmake -B%{build-dir} -H"%{conf-root}" -G"%{generator}" %{cmake-args}

>       make: cmake --build %{build-dir} -- ${JOBS}
>       make-install: env DESTDIR="%{install-root}" cmake --build %{build-dir} --target install

>       # Set this if the sources cannot handle parallelization.
>       #
>       # notparallel: True

>     config:

>       # Commands for configuring the software
>       #
>       configure-commands:
>       - |
>         %{cmake}

>       # Commands for building the software
>       #
>       build-commands:
>       - |
>         %{make}

>       # Commands for installing the software into a
>       # destination folder
>       #
>       install-commands:
>       - |
>         %{make-install}

>       # Commands for stripping debugging information out of
>       # installed binaries
>       #
>       strip-commands:
>       - |
>         %{strip-binaries}

>     # Use max-jobs CPUs for building and enable verbosity
>     environment:
>       JOBS: -j%{max-jobs}

>     # And dont consider JOBS as something which may
>     # affect build output.
>     environment-nocache:
>     - JOBS

See built-in functionality documentation for details on common configuration options for build elements.