diff options
author | Pierluigi Taddei <pierluigi.taddei@gmail.com> | 2016-09-08 18:26:59 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2016-09-15 17:35:25 (GMT) |
commit | 31be918b0b2dd445bdf85d72a8eaa29841137bc8 (patch) | |
tree | 35af3199ab0fb54a1722d67ecf2a573e3efc153d /Source/cmFindPackageCommand.h | |
parent | 010140311a0aa9336b7e2a2d22c177d445ee1c32 (diff) | |
download | CMake-31be918b0b2dd445bdf85d72a8eaa29841137bc8.zip CMake-31be918b0b2dd445bdf85d72a8eaa29841137bc8.tar.gz CMake-31be918b0b2dd445bdf85d72a8eaa29841137bc8.tar.bz2 |
find_package: Optionally sort globbed directories in a meaningful order
Add `CMAKE_FIND_PACKAGE_SORT_{ORDER,DIRECTION}` variables to specify
sort order and direction.
When multiple package with the same name have been found in the same
location sorting option can be used to force a specific version to be
loaded (e.g. libA_1.12.0 instead of libA_1.1.0). Currently sorting by
NAME and by NATURAL order have been implemented.
Natural ordering makes use of the `strverscmp(3)` ordering.
Diffstat (limited to 'Source/cmFindPackageCommand.h')
-rw-r--r-- | Source/cmFindPackageCommand.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/Source/cmFindPackageCommand.h b/Source/cmFindPackageCommand.h index 087107e..babdd5a 100644 --- a/Source/cmFindPackageCommand.h +++ b/Source/cmFindPackageCommand.h @@ -24,6 +24,27 @@ class cmFindPackageFileList; class cmFindPackageCommand : public cmFindCommon { public: + /*! A sorting order strategy to be applied to recovered package folders (see + * FIND_PACKAGE_SORT_ORDER)*/ + enum /*class*/ SortOrderType + { + None, + Name_order, + Natural + }; + /*! A sorting direction to be applied to recovered package folders (see + * FIND_PACKAGE_SORT_DIRECTION)*/ + enum /*class*/ SortDirectionType + { + Asc, + Dec + }; + + /*! sorts a given list of string based on the input sort parameters */ + static void Sort(std::vector<std::string>::iterator begin, + std::vector<std::string>::iterator end, SortOrderType order, + SortDirectionType dir); + cmFindPackageCommand(); /** @@ -156,6 +177,11 @@ private: std::vector<std::string> Configs; std::set<std::string> IgnoredPaths; + /*! the selected sortOrder (None by default)*/ + SortOrderType SortOrder; + /*! the selected sortDirection (Asc by default)*/ + SortDirectionType SortDirection; + struct ConfigFileInfo { std::string filename; |