mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-16 14:08:35 +08:00
cmFindLibraryCommand: Refactor AddArchitecturePath logic
Use boolean variables to save results and rename variables to more closely represent their roles.
This commit is contained in:
@@ -77,31 +77,41 @@ void cmFindLibraryCommand::AddArchitecturePath(
|
||||
bool fresh)
|
||||
{
|
||||
std::string::size_type pos = dir.find("lib/", start_pos);
|
||||
if (pos != std::string::npos) {
|
||||
std::string cur_dir = dir.substr(0, pos + 3);
|
||||
|
||||
// Follow "lib<suffix>".
|
||||
std::string next_dir = cur_dir + suffix;
|
||||
if (cmSystemTools::FileIsDirectory(next_dir)) {
|
||||
next_dir += dir.substr(pos + 3);
|
||||
std::string::size_type next_pos = pos + 3 + strlen(suffix) + 1;
|
||||
this->AddArchitecturePath(next_dir, next_pos, suffix);
|
||||
if (pos != std::string::npos) {
|
||||
// Check for "lib".
|
||||
std::string lib = dir.substr(0, pos + 3);
|
||||
bool use_lib = cmSystemTools::FileIsDirectory(lib);
|
||||
|
||||
// Check for "lib<suffix>" and use it first.
|
||||
std::string libX = lib + suffix;
|
||||
bool use_libX = cmSystemTools::FileIsDirectory(libX);
|
||||
|
||||
if (use_libX) {
|
||||
libX += dir.substr(pos + 3);
|
||||
std::string::size_type libX_pos = pos + 3 + strlen(suffix) + 1;
|
||||
this->AddArchitecturePath(libX, libX_pos, suffix);
|
||||
}
|
||||
|
||||
// Follow "lib".
|
||||
if (cmSystemTools::FileIsDirectory(cur_dir)) {
|
||||
if (use_lib) {
|
||||
this->AddArchitecturePath(dir, pos + 3 + 1, suffix, false);
|
||||
}
|
||||
}
|
||||
|
||||
if (fresh) {
|
||||
// Check for <dir><suffix>/.
|
||||
std::string cur_dir = dir + suffix + "/";
|
||||
if (cmSystemTools::FileIsDirectory(cur_dir)) {
|
||||
this->SearchPaths.push_back(cur_dir);
|
||||
// Check for the original unchanged path.
|
||||
bool use_dir = cmSystemTools::FileIsDirectory(dir);
|
||||
|
||||
// Check for <dir><suffix>/ and use it first.
|
||||
std::string dirX = dir + suffix;
|
||||
bool use_dirX = cmSystemTools::FileIsDirectory(dirX);
|
||||
|
||||
if (use_dirX) {
|
||||
dirX += "/";
|
||||
this->SearchPaths.push_back(dirX);
|
||||
}
|
||||
|
||||
// Now add the original unchanged path
|
||||
if (cmSystemTools::FileIsDirectory(dir)) {
|
||||
if (use_dir) {
|
||||
this->SearchPaths.push_back(dir);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user