diff options
author | Brad King <brad.king@kitware.com> | 2023-05-25 15:59:26 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2023-05-25 17:42:58 (GMT) |
commit | 023de565d33cdb095c0d5665e408493087e4d458 (patch) | |
tree | 8f52e06801201ec59cb11dab088dbd9a289f1be2 /Help | |
parent | cf7b7600c669ea162e0c3960c3e4e3a5d04f3274 (diff) | |
download | CMake-023de565d33cdb095c0d5665e408493087e4d458.zip CMake-023de565d33cdb095c0d5665e408493087e4d458.tar.gz CMake-023de565d33cdb095c0d5665e408493087e4d458.tar.bz2 |
Optionally exclude implicit link directories via environment
A misconfigured compiler may pass extraneous implicit link directories
to its linker. If they are in `CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES`,
CMake may generate extra `-L` flags on mixed-language link lines that
break linking. Add an environment variable that users can set to work
around such misconfiguration of their compilers.
Diffstat (limited to 'Help')
-rw-r--r-- | Help/envvar/CMAKE_LANG_IMPLICIT_LINK_DIRECTORIES_EXCLUDE.rst | 13 | ||||
-rw-r--r-- | Help/manual/cmake-env-variables.7.rst | 1 | ||||
-rw-r--r-- | Help/variable/CMAKE_LANG_IMPLICIT_LINK_DIRECTORIES.rst | 7 |
3 files changed, 20 insertions, 1 deletions
diff --git a/Help/envvar/CMAKE_LANG_IMPLICIT_LINK_DIRECTORIES_EXCLUDE.rst b/Help/envvar/CMAKE_LANG_IMPLICIT_LINK_DIRECTORIES_EXCLUDE.rst new file mode 100644 index 0000000..36c79fa --- /dev/null +++ b/Help/envvar/CMAKE_LANG_IMPLICIT_LINK_DIRECTORIES_EXCLUDE.rst @@ -0,0 +1,13 @@ +CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES_EXCLUDE +---------------------------------------------- + +.. versionadded:: 3.27 + +.. include:: ENV_VAR.txt + +A :ref:`semicolon-separated list <CMake Language Lists>` of directories +to exclude from the :variable:`CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES` +variable when it is automatically detected from the ``<LANG>`` compiler. + +This may be used to work around misconfigured compiler drivers that pass +extraneous implicit link directories to their linker. diff --git a/Help/manual/cmake-env-variables.7.rst b/Help/manual/cmake-env-variables.7.rst index f7ae94d..197e56e 100644 --- a/Help/manual/cmake-env-variables.7.rst +++ b/Help/manual/cmake-env-variables.7.rst @@ -50,6 +50,7 @@ Environment Variables that Control the Build /envvar/CMAKE_GENERATOR_TOOLSET /envvar/CMAKE_INSTALL_MODE /envvar/CMAKE_LANG_COMPILER_LAUNCHER + /envvar/CMAKE_LANG_IMPLICIT_LINK_DIRECTORIES_EXCLUDE /envvar/CMAKE_LANG_LINKER_LAUNCHER /envvar/CMAKE_MSVCIDE_RUN_PATH /envvar/CMAKE_NO_VERBOSE diff --git a/Help/variable/CMAKE_LANG_IMPLICIT_LINK_DIRECTORIES.rst b/Help/variable/CMAKE_LANG_IMPLICIT_LINK_DIRECTORIES.rst index 081c4da..7e008df 100644 --- a/Help/variable/CMAKE_LANG_IMPLICIT_LINK_DIRECTORIES.rst +++ b/Help/variable/CMAKE_LANG_IMPLICIT_LINK_DIRECTORIES.rst @@ -6,9 +6,14 @@ Implicit linker search path detected for language ``<LANG>``. Compilers typically pass directories containing language runtime libraries and default library search paths when they invoke a linker. These paths are implicit linker search directories for the compiler's -language. For each language enabled by the :command:`project` or +language. + +For each language enabled by the :command:`project` or :command:`enable_language` command, CMake automatically detects these directories and reports the results in this variable. +The :envvar:`CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES_EXCLUDE` environment +variable may be set to exclude specific directories from the automatically +detected results. When linking to a static library, CMake adds the implicit link directories from this variable for each language used in the static library (except |