summaryrefslogtreecommitdiffstats
path: root/Source/cmFindPackageCommand.h
Commit message (Collapse)AuthorAgeFilesLines
* find_package: Drop search in recent cmake-gui locationsBrad King2015-05-081-2/+0
| | | | | | | | | | | | | | | | | | | | | | The find_package command, on Windows, has always searched build trees recently visited by cmake-gui (or CMakeSetup at one time). This was done when the command was created with the intention of simplifying workflows involving building multiple dependent projects. However, this behavior depends on recent developer interaction and therefore can create different find results based on transient system states. It can lead to surprising results and user confusion. Since this behavior was first added CMake has gained many more search options, better error messages when a package is not found, and a package registry. The latter in particular allows projects to make their build trees available for dependent projects to find without user intervention. Therefore the originally intended workflow can be achieved in other, more stable ways. After the above evoluion of find_package we have now decided that the magic search-where-cmake-gui-was behavior does more harm than good. Drop it. We do not need a policy for this behavior change because it only affects interactive use.
* Use containers of labeled search paths instead of individual membersChuck Atkins2014-11-121-0/+15
| | | | | | | Manage classes of search paths in labeled containers. This removes the need to have a seperate member variable for each type of search path, but also allows path types to be grouped togethor in various different ways and manipulated as subsets of the full set of search paths.
* Encapsulate search path manipulation functions into a seperate class.Chuck Atkins2014-11-111-4/+3
| | | | | | The functions for adding the various different types of paths have been factored out into a new class, cmSearchPath. It is to be used as a helper container class for the various find_* commands.
* Refactor and seperate search path construction for find commandsChuck Atkins2014-11-111-12/+15
| | | | | | | Prior to this commit, the set of search paths to traverse for find commands was incrementally constructed. This change allows each group of paths, i.e. CMakeVariablePaths, UserHintsPaths, SystemEnvironmentPaths, etc. to be constructed and manipulated independently, and then all combined togethor.
* stringapi: Command namesBen Boeckel2014-03-081-1/+1
|
* strings: Remove cmStdString referencesBen Boeckel2014-03-081-6/+6
| | | | | | | | | | | Casts from std::string -> cmStdString were high on the list of things taking up time. Avoid such implicit casts across function calls by just using std::string everywhere. The comment that the symbol name is too long is no longer relevant since modern debuggers alias the templates anyways and the size is a non-issue since the underlying methods are generated since it's inherited.
* stringapi: Use strings for variable namesBen Boeckel2014-03-081-1/+1
| | | | Variable names are always generated by CMake and should never be NULL.
* cmVersion: Fix CMake_VERSION_ENCODE for date in patch levelBrad King2014-02-101-1/+1
| | | | | | | | | Use a uint64_t to store encoded version numbers so we have plenty of bits available. Encode with room for up to 1000 minor releases between major releases and to encode dates until the year 10000 in the patch level. This is necessary because CMake development versions prior to release 2.8.0 used the date in the patch level, and this practice may be restored after the 3.0 release.
* Drop compatibility with CMake < 2.4Brad King2013-10-231-1/+0
| | | | | | | | | | | | Drop all behavior activated by setting CMAKE_BACKWARDS_COMPATIBILITY to a value lower than 2.4, and generate an error when projects or the user attempt to do so. In the error suggest using a CMake 2.8.x release. Teach cmake_minimum_required to warn about projects that do not require at least CMake 2.4. They are not supported by CMake >= 3.0. Replace the documentation of CMAKE_BACKWARDS_COMPATIBILITY with a reference to policy CMP0001.
* Drop builtin command documentationBrad King2013-10-161-16/+0
| | | | | Drop all GetTerseDocumentation and GetFullDocumentation methods from commands. The command documentation is now in Help/command/*.rst files.
* fix #13195: avoid multiple mentions of found packagesAlex Neundorf2012-05-061-1/+1
| | | | | | | Now before adding a package to the list of found or not-found packages, the package is remvoed from both lists before. Alex
* Merge topic 'add-const-qualifiers'David Cole2012-03-021-4/+4
|\ | | | | | | | | | | 737c49a Add 'const' qualifier to some cmCommand members 261491f cmPropertyDefinition::IsChained is const
| * Add 'const' qualifier to some cmCommand membersYury G. Kudryashov2012-02-291-4/+4
| | | | | | | | | | Use const_cast for the special case in cmFindBase where GetFullDocumentation calls GenerateDocumentation.
* | find_package: Optionally warn when implicitly using Config modeBrad King2012-02-281-0/+1
| | | | | | | | | | | | | | | | | | | | | | Define variable CMAKE_FIND_PACKAGE_WARN_NO_MODULE for use by a project that wants to use an explicit mode in every call to find_package in order to generate more specific failure messages. Word the warning using the new CONFIG and MODULE mode keywords when the minimum required version of CMake is new enough to have them. Otherwise word the warning using the old NO_MODULE mode keyword. Inspired-by: Alex Neundorf <neundorf@kde.org>
* | find_package: add MODULE mode to use only Find-modulesAlex Neundorf2012-02-281-0/+1
| | | | | | | | | | The new mode differ from default mode in that that it doesn't fallback to config mode. The default mode stays unchanged.
* | find_package: rename NoModule to UseFindModulesAlex Neundorf2012-02-271-1/+1
|/ | | | | | ...positive logic is easier to handle Alex
* Refactor find_* command final path list computationBrad King2011-09-231-1/+0
| | | | | | | All find_* commands re-root the list of paths and then add trailing slashes. Factor this pair of calls out into a dedicated method. The new method would be the only caller to AddTrailingSlashes, so subsume that method into it.
* Teach find_(library|package) about Linux multiarch (#12037)Brad King2011-06-081-0/+1
| | | | | | | | | | | | | Implement support for multiarch as specified here: http://wiki.debian.org/Multiarch https://wiki.ubuntu.com/MultiarchSpec Detect the <arch> part of <prefix>/lib/<arch> from the implicit library search path from each compiler to set CMAKE_<lang>_LIBRARY_ARCHITECTURE. Define CMAKE_LIBRARY_ARCHITECTURE using one of these values (they should all be the same). Teach the find_library and find_package commands to search <prefix>/lib/<arch> whenever they would search <prefix>/lib.
* find_package: Check both 32-bit and 64-bit registry viewsBrad King2011-04-131-1/+3
| | | | | | The system package registry is under HKEY_LOCAL_MACHINE\SOFTWARE which has separate views for 32-bit and 64-bit applications. Look in both views, but prefer the architecture matching the build target platform.
* find_package: Search a "system package registry"Brad King2011-04-131-1/+3
| | | | | | | | Generalize the "user package registry" created by commit ed0650f6 (Teach find_package to search a "package registry", 2009-09-01). Define a corresponding "system" registry key under HKEY_LOCAL_MACHINE. This gives package installers a place to create a registry value that points at the right location for find_package() to locate the package.
* find_package: Rename implementation of user package registryBrad King2011-04-131-2/+2
| | | | | Rename {Registry => UserRegistry} in names associated specifically with the user package registry and not registry access in general.
* Speedup find_* commands (#11412)Brad King2010-11-121-0/+2
| | | | | | | Delay computation of the command documentation until it is needed. It is wasteful to do it in the constructor on every call. Inspired-By: Christian Ehrlicher <Ch.Ehrlicher@gmx.de>
* Replace the two vector<string,string> with one vector<struct{string,string}>Alex Neundorf2010-08-291-2/+3
| | | | | | | | | Before this patch there were two separate vectors, and the code made sure they always had the same size. With this patch the code doesn't have to ensure this anymore, there is only one vector now. Alex
* Record all considered Config files and their versions.Alex Neundorf2010-08-291-1/+4
| | | | | | | | As suggested on cmake-devel, find_package in Config-mode now records all considered config-files and their versions in <package>_CONSIDERED_CONFIGS and <package>_CONSIDERED_VERSIONS respectively. Alex
* Teach find_* commands to ignore some pathsTodd Gamblin2010-08-131-0/+1
| | | | | | | | Add platform configuration variable CMAKE_SYSTEM_IGNORE_PATH and user configuration variable CMAKE_IGNORE_PATH. These specify a set of directories that will be ignored by all the find commands. Update FindPackageTest so that several cases will fail without a functioning CMAKE_IGNORE_PATH.
* Fix find_package() when <pkg>_DIR is wrongBrad King2009-10-071-1/+1
| | | | | | | | | | | | When <pkg>_DIR is set to an incorrect version we search again and store the result in the variable, even if it is <pkg>_DIR-NOTFOUND. There was a bug in the case when the new search does not find anything and the old value came from a cache entry with UNINITALIZED type. The command used to try to load a package configuration file from the last place searched, and would leave the old wrong value in the entry. This commit fixes the behavior to avoid trying to load a missing file and to set the value to <pkg>_DIR-NOTFOUND as expected.
* Convert CMake to OSI-approved BSD LicenseBrad King2009-09-281-14/+9
| | | | | | | This converts the CMake license to a pure 3-clause OSI-approved BSD License. We drop the previous license clause requiring modified versions to be plainly marked. We also update the CMake copyright to cover the full development time range.
* Teach find_package to search a "package registry"Brad King2009-09-011-0/+5
| | | | | | | | | | | | | | A common user workflow is to build a series of dependent projects in order. Each project locates its dependencies with find_package. We introduce a "user package registry" to help find_package locate packages built in non-standard search locations. The registry explicitly stores locations of build trees providing instances of a given package. There is no defined order among the locations specified. These locations should provide package configuration files (<package>-config.cmake) and package version files (<package>-config-version.cmake) so that find_package will recognize the packages and test version numbers.
* ENH: Isolate policy changes in included scriptsBrad King2009-01-221-1/+3
| | | | | | | | Isolation of policy changes inside scripts is important for protecting the including context. This teaches include() and find_package() to imply a cmake_policy(PUSH) and cmake_policy(POP) around the scripts they load, with a NO_POLICY_SCOPE option to disable the behavior. This also creates CMake Policy CMP0011 to provide compatibility. See issue #8192.
* ENH: when trying to find a FooConfig.cmake file, if in the directory pointedAlexander Neundorf2009-01-081-1/+0
| | | | | | | | | | to by the Foo_DIR variable there is no FooConfig.cmake file, then instead of abort and complain that the user should set or clear the Foo_DIR variables, just search for the file and discard the old Foo_DIR contents The tests succeed, ok by Brad. Alex
* ENH: Preserve <pkg>_FIND_XXX vars in find_packageBrad King2008-12-091-0/+5
| | | | | | | | | When the find_package command loads a module it sets several <pkg>_FIND_XXX variables to communicate information about the command invocation to the module. This restores the original state of the variables when the command returns. This behavior is useful when a find-module recursively calls find_package with NO_MODULE so that the inner call does not change the values in the find-module.
* ENH: Improve find_package version numberingBrad King2008-09-101-0/+2
| | | | | | | | Make the number of version components specified explicitly available. Set variables for unspecified version components to "0" instead of leaving them unset. This simplifies version number handling for find- and config-modules. Also support a fourth "tweak" version component since some packages use them.
* COMP: fix compile warning/error (non-void function returning void)Alexander Neundorf2008-09-071-1/+1
| | | | Alex
* ENH: provide the xxx_FIND_QUIETLY, xxx_FIND_REQUIRED and xxx_FIND_VERSION_ ↵Alexander Neundorf2008-09-061-0/+1
| | | | | | | | | variables also in Config mode, so the xxxConfig.cmake files can e.g. test the QUIETLY parameter and print something or not Alex
* ENH: Teach find_package about lib64 pathsBrad King2008-08-121-0/+1
| | | | | When find_package is about to look in <prefix>/lib, search first in <prefix>/lib64 in cases that find_library would use lib64 paths.
* ENH: Add HINTS option to find_* commands.Brad King2008-06-091-1/+2
| | | | | | - Hints are searched after user locations but before system locations - The HINTS option should have paths provided by system introspection - The PATHS option should have paths that are hard-coded guesses
* ENH: Refactor cmFindCommon, cmFindBase, and cmFindPackageCommandBrad King2008-06-051-3/+7
| | | | | | | | | | | - Add each part of the search order in a separate method. - Collect added paths in an ivar in cmFindCommon. - Move user path storage up to cmFindCommon and share between cmFindBase and cmFindPackageCommand. - Expand user path registry values up in cmFindCommon - Enables 32-/64-bit registry view for find_package - Disables registry expansion for paths not specified with the PATHS argument, which is not expected.
* ENH: Added version support to Config mode of find_package command.Brad King2008-01-291-0/+10
| | | | | | - Added EXACT option to request an exact version. - Enforce version using check provided by package. - Updated FindPackageTest to test versioning in config mode.
* ENH: add return and break support to cmake, also change basic command ↵Ken Martin2008-01-231-1/+2
| | | | invocation signature to be able to return extra informaiton via the cmExecutionStatus class
* ENH: Implement version support in the find_package command module mode. ↵Brad King2008-01-211-0/+5
| | | | Version numbers provided to the command are converted to variable settings to tell the FindXXX.cmake module what version is requested. This addresses issue #1645.
* ENH: Major improvements to the FIND_PACKAGE command. See bug #3659.Brad King2008-01-171-40/+38
| | | | | | | | | - Use CMAKE_PREFIX_PATH and CMAKE_SYSTEM_PREFIX_PATH among other means to locate package configuration files. - Create cmFindCommon as base for cmFindBase and cmFindPackageCommand - Move common functionality up to cmFindCommon - Improve documentation of FIND_* commands. - Fix FIND_* commands to not add framework/app paths in wrong place.
* STYLE: Removed trailing whitespace.Brad King2007-12-151-5/+5
|
* ENH: make commands lower case by defaultKen Martin2007-10-101-2/+2
|
* COMP: also commit the header...Alexander Neundorf2007-08-071-0/+2
| | | | Alex
* STYLE: fix some typos, nicer debug outputAlexander Neundorf2007-07-191-1/+1
| | | | Alex
* ENH: Added NO_MODULE and COMPONENTS options to improve flexibility of the ↵Brad King2006-10-261-5/+7
| | | | command. Re-implemented argument parsing to be simpler and more robust.
* ENH: Added optional component list to the REQUIRED option of the ↵Brad King2006-01-271-2/+5
| | | | FIND_PACKAGE command. This addresses bug#2771.
* ENH: Make commands scriptableAndy Cedilnik2005-12-071-0/+5
|
* ENH: big change that includes immediate subdir support, removing the notion ↵Ken Martin2005-03-181-3/+0
| | | | of inherited commands, makefiles no longer read in the parent makefiles but instead inherit thier parent makefiles current settings
* ENH#696: Adding REQUIRED option to FIND_PACKAGE command. It will terminate ↵Brad King2004-04-191-3/+4
| | | | the cmake configure step if the package is not found.