# Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file LICENSE.rst or https://cmake.org/licensing for details. #[=======================================================================[.rst: CTestUseLaunchers ----------------- This module sets the ``RULE_LAUNCH_*`` global properties when the :variable:`CTEST_USE_LAUNCHERS` variable is set to a true-like value (e.g., ``ON``): * :prop_gbl:`RULE_LAUNCH_COMPILE` * :prop_gbl:`RULE_LAUNCH_CUSTOM` * :prop_gbl:`RULE_LAUNCH_LINK` Load this module in a CMake project with: .. code-block:: cmake include(CTestUseLaunchers) The ``CTestUseLaunchers`` module is automatically included by the :module:`CTest` module when ``include(CTest)`` is called. However, it is provided as a separate module so that projects can use the ``CTEST_USE_LAUNCHERS`` functionality independently. To use launchers, set the ``CTEST_USE_LAUNCHERS`` variable to a true-like value in a :option:`ctest -S` dashboard script, and then also set the ``CTEST_USE_LAUNCHERS`` cache variable in the configured project. Both ``cmake`` and ``ctest`` must be aware of its value for the launchers to function correctly: * ``cmake`` needs it to generate the appropriate build rules * ``ctest`` requires it for accurate error and warning analysis For convenience, the environment variable :envvar:`CTEST_USE_LAUNCHERS_DEFAULT` may be set in the :option:`ctest -S` script. Then, as long as the ``CMakeLists.txt`` includes the ``CTest`` or ``CTestUseLaunchers`` module, it will use the value of the environment variable to initialize a ``CTEST_USE_LAUNCHERS`` cache variable. This cache variable initialization only occurs if ``CTEST_USE_LAUNCHERS`` is not already defined. .. versionadded:: 3.8 If ``CTEST_USE_LAUNCHERS`` is set to a true-like value in a :option:`ctest -S` script, the :command:`ctest_configure` command will add ``-DCTEST_USE_LAUNCHERS:BOOL=TRUE`` to the ``cmake`` command when configuring the project. Examples ^^^^^^^^ .. code-block:: cmake set(CTEST_USE_LAUNCHERS ON) include(CTestUseLaunchers) #]=======================================================================] if(NOT DEFINED CTEST_USE_LAUNCHERS AND DEFINED ENV{CTEST_USE_LAUNCHERS_DEFAULT}) set(CTEST_USE_LAUNCHERS "$ENV{CTEST_USE_LAUNCHERS_DEFAULT}" CACHE INTERNAL "CTEST_USE_LAUNCHERS initial value from ENV") endif() if(NOT "${CMAKE_GENERATOR}" MATCHES "Make|Ninja|FASTBuild") set(CTEST_USE_LAUNCHERS 0) endif() if(CTEST_USE_LAUNCHERS) set(__launch_common_options "--target-name --current-build-dir --build-dir --object-dir ") set(__launch_compile_options "${__launch_common_options} --output --source --language ") set(__launch_link_options "${__launch_common_options} --output --target-type --language ") set(__launch_custom_options "${__launch_common_options} --output ") if("${CMAKE_GENERATOR}" MATCHES "Ninja|FASTBuild") string(APPEND __launch_compile_options " --filter-prefix ") endif() set(CTEST_LAUNCH_COMPILE "\"${CMAKE_CTEST_COMMAND}\" --launch ${__launch_compile_options} --") set(CTEST_LAUNCH_LINK "\"${CMAKE_CTEST_COMMAND}\" --launch ${__launch_link_options} --") set(CTEST_LAUNCH_CUSTOM "\"${CMAKE_CTEST_COMMAND}\" --launch ${__launch_custom_options} --") set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CTEST_LAUNCH_COMPILE}") set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK "${CTEST_LAUNCH_LINK}") set_property(GLOBAL PROPERTY RULE_LAUNCH_CUSTOM "${CTEST_LAUNCH_CUSTOM}") endif()