mirror of
https://github.com/Kitware/CMake.git
synced 2026-02-05 22:59:43 -06:00
FindPkgConfig: Make IMPORTED_TARGET test verify NO...PATH properly
This commit is contained in:
@@ -24,3 +24,64 @@ if (NCURSES_FOUND)
|
|||||||
else ()
|
else ()
|
||||||
message(STATUS "skipping test; ncurses not found")
|
message(STATUS "skipping test; ncurses not found")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
|
||||||
|
# Setup for the remaining package tests below
|
||||||
|
set(PKG_CONFIG_USE_CMAKE_PREFIX_PATH)
|
||||||
|
set(fakePkgDir ${CMAKE_CURRENT_BINARY_DIR}/pc-fakepackage)
|
||||||
|
foreach(i 1 2)
|
||||||
|
set(pname cmakeinternalfakepackage${i})
|
||||||
|
file(WRITE ${fakePkgDir}/lib/lib${pname}.a "")
|
||||||
|
file(WRITE ${fakePkgDir}/lib/${pname}.lib "")
|
||||||
|
file(WRITE ${fakePkgDir}/lib/pkgconfig/${pname}.pc
|
||||||
|
"Name: CMakeInternalFakePackage${i}
|
||||||
|
Description: Dummy package (${i}) for FindPkgConfig IMPORTED_TARGET test
|
||||||
|
Version: 1.2.3
|
||||||
|
Libs: -l${pname}
|
||||||
|
")
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
# Always find the .pc file in the calls further below so that we can test that
|
||||||
|
# the import target find_library() calls handle the NO...PATH options correctly
|
||||||
|
set(ENV{PKG_CONFIG_PATH} ${fakePkgDir}/lib/pkgconfig)
|
||||||
|
|
||||||
|
# Confirm correct behavior of NO_CMAKE_PATH, ensuring we only find the library
|
||||||
|
# for the imported target if we have both set CMAKE_PREFIX_PATH and have not
|
||||||
|
# given the NO_CMAKE_PATH option
|
||||||
|
unset(CMAKE_PREFIX_PATH)
|
||||||
|
unset(ENV{CMAKE_PREFIX_PATH})
|
||||||
|
pkg_check_modules(FakePackage1 QUIET IMPORTED_TARGET cmakeinternalfakepackage1)
|
||||||
|
if (TARGET PkgConfig::FakePackage1)
|
||||||
|
message(FATAL_ERROR "Have import target for fake package 1 with no path prefix")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(CMAKE_PREFIX_PATH ${fakePkgDir})
|
||||||
|
pkg_check_modules(FakePackage1 QUIET IMPORTED_TARGET NO_CMAKE_PATH cmakeinternalfakepackage1)
|
||||||
|
if (TARGET PkgConfig::FakePackage1)
|
||||||
|
message(FATAL_ERROR "Have import target for fake package 1 with ignored cmake path")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
pkg_check_modules(FakePackage1 REQUIRED QUIET IMPORTED_TARGET cmakeinternalfakepackage1)
|
||||||
|
if (NOT TARGET PkgConfig::FakePackage1)
|
||||||
|
message(FATAL_ERROR "No import target for fake package 1 with prefix path")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# And now do the same for the NO_CMAKE_ENVIRONMENT_PATH - ENV{CMAKE_PREFIX_PATH}
|
||||||
|
# combination
|
||||||
|
unset(CMAKE_PREFIX_PATH)
|
||||||
|
unset(ENV{CMAKE_PREFIX_PATH})
|
||||||
|
pkg_check_modules(FakePackage2 QUIET IMPORTED_TARGET cmakeinternalfakepackage2)
|
||||||
|
if (TARGET PkgConfig::FakePackage2)
|
||||||
|
message(FATAL_ERROR "Have import target for fake package 2 with no path prefix")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(ENV{CMAKE_PREFIX_PATH} ${fakePkgDir})
|
||||||
|
pkg_check_modules(FakePackage2 QUIET IMPORTED_TARGET NO_CMAKE_ENVIRONMENT_PATH cmakeinternalfakepackage2)
|
||||||
|
if (TARGET PkgConfig::FakePackage2)
|
||||||
|
message(FATAL_ERROR "Have import target for fake package 2 with ignored cmake path")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
pkg_check_modules(FakePackage2 REQUIRED QUIET IMPORTED_TARGET cmakeinternalfakepackage2)
|
||||||
|
if (NOT TARGET PkgConfig::FakePackage2)
|
||||||
|
message(FATAL_ERROR "No import target for fake package 2 with prefix path")
|
||||||
|
endif()
|
||||||
|
|||||||
Reference in New Issue
Block a user