This directory contains tests that run CMake to configure a project but do not actually build anything. To add a test: 1. Add a subdirectory named for the test, say ``/``. 2. In ``./CMakeLists.txt`` call ``add_RunCMake_test`` and pass the test directory name ````. 3. Create script ``/RunCMakeTest.cmake`` in the directory containing:: include(RunCMake) run_cmake(SubTest1) ... run_cmake(SubTestN) where ``SubTest1`` through ``SubTestN`` are sub-test names each corresponding to an independent CMake run and project configuration. One may also add calls of the form:: run_cmake_command(SubTestI ${CMAKE_COMMAND} ...) to fully customize the test case command-line. Alternatively, if the test is to cover running ``ctest -S`` then use:: include(RunCTest) run_ctest(SubTest1) ... run_ctest(SubTestN) and create ``test.cmake.in``, ``CTestConfig.cmake.in``, and ``CMakeLists.txt.in`` files to be configured for each case. 4. Create file ``/CMakeLists.txt`` in the directory containing:: cmake_minimum_required(...) project(${RunCMake_TEST} NONE) # or languages needed include(${RunCMake_TEST}.cmake) where ``${RunCMake_TEST}`` is literal. A value for ``RunCMake_TEST`` will be passed to CMake by the ``run_cmake`` macro when running each sub-test. 5. Create a ``/.cmake`` file for each sub-test named above containing the actual test code. Optionally create files containing expected test results: ``-result.txt`` Regex matching expected process result, if not ``0`` ``-stdout.txt`` Regex matching expected stdout content ``-stderr.txt`` Regex matching expected stderr content, if not ``^$`` ``-check.cmake`` Custom result check. Note that when a specific platform expects differing stdout or stderr that can be done by adding a platform specific output file. These follow the naming convention of: ``-stdout-.txt`` ``-stderr-.txt`` Note that trailing newlines will be stripped from actual and expected test output before matching against the stdout and stderr expressions. The code in ``-check.cmake`` may use variables ``RunCMake_TEST_SOURCE_DIR`` Top of test source tree ``RunCMake_TEST_BINARY_DIR`` Top of test binary tree and an failure must store a message in ``RunCMake_TEST_FAILED``. To speed up local testing, you can choose to run only a subset of ``run_cmake()`` tests in a ``RunCMakeTest.cmake`` script by using the ``RunCMake_TEST_FILTER`` environment variable. If this variable is set, it is treated as a regular expression, and any tests whose names don't match the regular expression are not run. For example:: $ RunCMake_TEST_FILTER="^example" ctest -R '^RunCMake\.Example$' This will only run subtests in ``RunCMake.Example`` that start with ``example``. To speed up the process of creating a new ``RunCMake`` test, you can run a script that will automatically perform steps 1 through 4 for you:: cmake -DRunCMake_TEST_SUITE= -P Tests/RunCMake/AddRunCMakeTestSuite.cmake Be sure to run this from the top-level CMake source directory.