Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
CMake
CMake
Commits
22e65d10
Commit
22e65d10
authored
Jun 13, 2019
by
Cristian Adam
💬
Browse files
find_package: Fixed CMAKE_FIND_PACKAGE_PREFER_CONFIG Module fallback
Fixes:
#19361
parent
a4231943
Changes
4
Hide whitespace changes
Inline
Side-by-side
Source/cmFindPackageCommand.cxx
View file @
22e65d10
...
...
@@ -502,8 +502,13 @@ bool cmFindPackageCommand::InitialPass(std::vector<std::string> const& args,
if
(
this
->
Makefile
->
IsOn
(
"CMAKE_FIND_PACKAGE_PREFER_CONFIG"
))
{
if
(
this
->
UseConfigFiles
&&
this
->
FindPackageUsingConfigMode
())
{
loadedPackage
=
true
;
}
else
if
(
this
->
FindPackageUsingModuleMode
())
{
loadedPackage
=
true
;
}
else
{
if
(
this
->
FindPackageUsingModuleMode
())
{
loadedPackage
=
true
;
}
else
{
// The package was not loaded. Report errors.
HandlePackageMode
(
HandlePackageModeType
::
Module
);
}
}
}
else
{
if
(
this
->
UseFindModules
&&
this
->
FindPackageUsingModuleMode
())
{
...
...
@@ -603,7 +608,7 @@ bool cmFindPackageCommand::FindPackageUsingConfigMode()
this
->
IgnoredPaths
.
insert
(
ignored
.
begin
(),
ignored
.
end
());
// Find and load the package.
return
this
->
HandlePackageMode
();
return
this
->
HandlePackageMode
(
HandlePackageModeType
::
Config
);
}
void
cmFindPackageCommand
::
SetModuleVariables
(
const
std
::
string
&
components
)
...
...
@@ -722,7 +727,8 @@ bool cmFindPackageCommand::FindModule(bool& found)
return
true
;
}
bool
cmFindPackageCommand
::
HandlePackageMode
()
bool
cmFindPackageCommand
::
HandlePackageMode
(
HandlePackageModeType
handlePackageModeType
)
{
this
->
ConsideredConfigs
.
clear
();
...
...
@@ -817,6 +823,12 @@ bool cmFindPackageCommand::HandlePackageMode()
}
}
if
(
this
->
Makefile
->
IsOn
(
"CMAKE_FIND_PACKAGE_PREFER_CONFIG"
)
&&
!
found
&&
handlePackageModeType
==
HandlePackageModeType
::
Config
)
{
// Config mode failed. Allow Module case.
result
=
false
;
}
// package not found
if
(
result
&&
!
found
)
{
// warn if package required or neither quiet nor in config mode
...
...
Source/cmFindPackageCommand.h
View file @
22e65d10
...
...
@@ -103,7 +103,14 @@ private:
bool
FindModule
(
bool
&
found
);
void
AddFindDefinition
(
const
std
::
string
&
var
,
const
char
*
val
);
void
RestoreFindDefinitions
();
bool
HandlePackageMode
();
enum
/*class*/
HandlePackageModeType
{
Module
,
Config
};
bool
HandlePackageMode
(
HandlePackageModeType
type
);
bool
FindConfig
();
bool
FindPrefixedConfig
();
bool
FindFrameworkConfig
();
...
...
Tests/FindPackageTest/CMakeLists.txt
View file @
22e65d10
...
...
@@ -579,3 +579,16 @@ endif()
set
(
CMAKE_FIND_PACKAGE_PREFER_CONFIG OFF
)
set
(
CMAKE_PREFIX_PATH
)
############################################################################
##Test find_package CMAKE_FIND_PACKAGE_PREFER_CONFIG with module fallback
set
(
CMAKE_MODULE_PATH
${
CMAKE_CURRENT_SOURCE_DIR
}
/PreferConfigOnlyModule
)
set
(
CMAKE_FIND_PACKAGE_PREFER_CONFIG ON
)
find_package
(
ACME REQUIRED
)
if
(
NOT ACME_FOUND
)
message
(
SEND_ERROR
"Did not find ACME package"
)
endif
()
Tests/FindPackageTest/PreferConfigOnlyModule/FindACME.cmake
0 → 100644
View file @
22e65d10
set
(
ACME_FOUND TRUE
)
Brad King
@brad.king
mentioned in commit
805cb43d
·
Jun 17, 2019
mentioned in commit
805cb43d
mentioned in commit 805cb43d3e82630b8489b6bdb6cb46bc2178fa96
Toggle commit list
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment