diff options
-rw-r--r-- | Help/command/find_file.rst | 3 | ||||
-rw-r--r-- | Help/command/find_library.rst | 3 | ||||
-rw-r--r-- | Help/command/find_path.rst | 3 | ||||
-rw-r--r-- | Help/release/dev/find-command-prefix-from-PATH-windows-only.rst | 12 | ||||
-rw-r--r-- | Source/cmFindBase.cxx | 10 | ||||
-rw-r--r-- | Tests/RunCMake/find_file/RunCMakeTest.cmake | 4 | ||||
-rw-r--r-- | Tests/RunCMake/find_library/RunCMakeTest.cmake | 4 | ||||
-rw-r--r-- | Tests/RunCMake/find_path/RunCMakeTest.cmake | 4 |
8 files changed, 35 insertions, 8 deletions
diff --git a/Help/command/find_file.rst b/Help/command/find_file.rst index bf7a919..e56097b 100644 --- a/Help/command/find_file.rst +++ b/Help/command/find_file.rst @@ -14,7 +14,8 @@ find_file .. |CMAKE_XXX_PATH| replace:: :variable:`CMAKE_INCLUDE_PATH` .. |CMAKE_XXX_MAC_PATH| replace:: :variable:`CMAKE_FRAMEWORK_PATH` -.. |SYSTEM_ENVIRONMENT_PATH_XXX| replace:: Directories in ``INCLUDE``, +.. |SYSTEM_ENVIRONMENT_PATH_XXX| replace:: Directories in ``INCLUDE``. + On Windows hosts: ``<prefix>/include/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE` is set, and |SYSTEM_ENVIRONMENT_PREFIX_PATH_XXX_SUBDIR|, and the directories in ``PATH`` itself. diff --git a/Help/command/find_library.rst b/Help/command/find_library.rst index 5d07574..31e6ec0 100644 --- a/Help/command/find_library.rst +++ b/Help/command/find_library.rst @@ -14,7 +14,8 @@ find_library .. |CMAKE_XXX_PATH| replace:: :variable:`CMAKE_LIBRARY_PATH` .. |CMAKE_XXX_MAC_PATH| replace:: :variable:`CMAKE_FRAMEWORK_PATH` -.. |SYSTEM_ENVIRONMENT_PATH_XXX| replace:: Directories in ``LIB``, +.. |SYSTEM_ENVIRONMENT_PATH_XXX| replace:: Directories in ``LIB``. + On Windows hosts: ``<prefix>/lib/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE` is set, and |SYSTEM_ENVIRONMENT_PREFIX_PATH_XXX_SUBDIR|, and the directories in ``PATH`` itself. diff --git a/Help/command/find_path.rst b/Help/command/find_path.rst index 4403cb5..76342d0 100644 --- a/Help/command/find_path.rst +++ b/Help/command/find_path.rst @@ -14,7 +14,8 @@ find_path .. |CMAKE_XXX_PATH| replace:: :variable:`CMAKE_INCLUDE_PATH` .. |CMAKE_XXX_MAC_PATH| replace:: :variable:`CMAKE_FRAMEWORK_PATH` -.. |SYSTEM_ENVIRONMENT_PATH_XXX| replace:: Directories in ``INCLUDE``, +.. |SYSTEM_ENVIRONMENT_PATH_XXX| replace:: Directories in ``INCLUDE``. + On Windows hosts: ``<prefix>/include/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE` is set, and |SYSTEM_ENVIRONMENT_PREFIX_PATH_XXX_SUBDIR|, and the directories in ``PATH`` itself. diff --git a/Help/release/dev/find-command-prefix-from-PATH-windows-only.rst b/Help/release/dev/find-command-prefix-from-PATH-windows-only.rst new file mode 100644 index 0000000..be6eb3e --- /dev/null +++ b/Help/release/dev/find-command-prefix-from-PATH-windows-only.rst @@ -0,0 +1,12 @@ +find-command-prefix-from-PATH-windows-only +------------------------------------------ + +* The :command:`find_library`, :command:`find_path`, and :command:`find_file` + commands no longer search in installation prefixes derived from the ``PATH`` + environment variable on non-Windows platforms. This behavior was added in + CMake 3.3 to support Windows hosts but has proven problematic on UNIX hosts. + Users that keep some ``<prefix>/bin`` directories in the ``PATH`` just for + their tools do not necessarily want any supporting ``<prefix>/lib`` + directories searched. One may set the ``CMAKE_PREFIX_PATH`` environment + variable with a :ref:`;-list <CMake Language Lists>` of prefixes that are + to be searched. diff --git a/Source/cmFindBase.cxx b/Source/cmFindBase.cxx index 90091c1..995097f 100644 --- a/Source/cmFindBase.cxx +++ b/Source/cmFindBase.cxx @@ -276,10 +276,16 @@ void cmFindBase::FillSystemEnvironmentPath() if(!this->EnvironmentPath.empty()) { paths.AddEnvPath(this->EnvironmentPath); +#if defined(_WIN32) || defined(__CYGWIN__) paths.AddEnvPrefixPath("PATH", true); + paths.AddEnvPath("PATH"); +#endif + } + else + { + // Add PATH + paths.AddEnvPath("PATH"); } - // Add PATH - paths.AddEnvPath("PATH"); paths.AddSuffixes(this->SearchPathSuffixes); } diff --git a/Tests/RunCMake/find_file/RunCMakeTest.cmake b/Tests/RunCMake/find_file/RunCMakeTest.cmake index 014f397..5ce96e0 100644 --- a/Tests/RunCMake/find_file/RunCMakeTest.cmake +++ b/Tests/RunCMake/find_file/RunCMakeTest.cmake @@ -1,3 +1,5 @@ include(RunCMake) -run_cmake(PrefixInPATH) +if(WIN32 OR CYGWIN) + run_cmake(PrefixInPATH) +endif() diff --git a/Tests/RunCMake/find_library/RunCMakeTest.cmake b/Tests/RunCMake/find_library/RunCMakeTest.cmake index 136031c..5733965 100644 --- a/Tests/RunCMake/find_library/RunCMakeTest.cmake +++ b/Tests/RunCMake/find_library/RunCMakeTest.cmake @@ -1,4 +1,6 @@ include(RunCMake) run_cmake(Created) -run_cmake(PrefixInPATH) +if(WIN32 OR CYGWIN) + run_cmake(PrefixInPATH) +endif() diff --git a/Tests/RunCMake/find_path/RunCMakeTest.cmake b/Tests/RunCMake/find_path/RunCMakeTest.cmake index 014f397..5ce96e0 100644 --- a/Tests/RunCMake/find_path/RunCMakeTest.cmake +++ b/Tests/RunCMake/find_path/RunCMakeTest.cmake @@ -1,3 +1,5 @@ include(RunCMake) -run_cmake(PrefixInPATH) +if(WIN32 OR CYGWIN) + run_cmake(PrefixInPATH) +endif() |