diff options
author | Brad King <brad.king@kitware.com> | 2016-05-09 10:06:22 -0400 |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2016-05-09 12:58:08 -0400 |
commit | b30b32a4931080280680aa5b439c0d4918553c56 (patch) | |
tree | 15bee4c60f6311fd73d60a0e98a90bcd89a17ffc | |
parent | 3ecdddfc35a0f0ecc1495d902f34d9cee2d59459 (diff) | |
download | cmake-b30b32a4931080280680aa5b439c0d4918553c56.tar.gz |
Drop find_(library|file|path) prefixes from PATH on non-Windows
Since commit v3.3.0-rc1~430^2 (Teach find_(library|file|path) to get
prefixes from PATH, 2015-02-18) we search in <prefix>/include and
<prefix>/lib directories for prefixes with bin directories in the PATH
environment variable. The motivation was to support MSYS, MinGW and
similar Windows platforms in their default environments automatically.
At the time this behavior was thought to be worthwhile in general.
Suggested-by: Chuck Atkins <chuck.atkins@kitware.com>
-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 bf7a919931..e56097beab 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 5d07574ad8..31e6ec0f33 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 4403cb5bc8..76342d020e 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 0000000000..be6eb3e4cf --- /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 90091c1e27..995097f02a 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 014f397346..5ce96e0e80 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 136031c63d..57339657e7 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 014f397346..5ce96e0e80 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() |