mirror of
https://github.com/Kitware/CMake.git
synced 2026-04-23 14:48:19 -05:00
Teach find_(library|file|path) to get prefixes from PATH (#15370)
The find_package command already knows how to compute installation prefixes from PATH. Use the same approach to establish prefixes for find_library, find_file, and find_path to use to look in directories like "<prefix>/lib[/<arch>]" and "<prefix>/include" for libraries and headers. This will reduce the amount of configuration end users need to do to establish a work environment rooted under a specific prefix.
This commit is contained in:
@@ -131,8 +131,10 @@ add_RunCMake_test(export)
|
||||
add_RunCMake_test(cmake_minimum_required)
|
||||
add_RunCMake_test(continue)
|
||||
add_RunCMake_test(file)
|
||||
add_RunCMake_test(find_file)
|
||||
add_RunCMake_test(find_library)
|
||||
add_RunCMake_test(find_package)
|
||||
add_RunCMake_test(find_path)
|
||||
add_RunCMake_test(get_filename_component)
|
||||
add_RunCMake_test(get_property)
|
||||
add_RunCMake_test(if)
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
project(${RunCMake_TEST} NONE)
|
||||
include(${RunCMake_TEST}.cmake)
|
||||
@@ -0,0 +1,4 @@
|
||||
-- PrefixInPATH_INCLUDE_DIR='PrefixInPATH_INCLUDE_DIR-NOTFOUND'
|
||||
-- PrefixInPATH_INCLUDE_DIR='.*/Tests/RunCMake/find_file/include/PrefixInPATH.h'
|
||||
-- PrefixInPATH_INCLUDE_DIR='.*/Tests/RunCMake/find_file/include/PrefixInPATH.h'
|
||||
-- PrefixInPATH_INCLUDE_DIR='.*/Tests/RunCMake/find_file/include/PrefixInPATH.h'
|
||||
@@ -0,0 +1,8 @@
|
||||
set(ENV_PATH "$ENV{PATH}")
|
||||
foreach(path "/does_not_exist" "" "/bin" "/sbin")
|
||||
unset(PrefixInPATH_INCLUDE_DIR CACHE)
|
||||
set(ENV{PATH} "${CMAKE_CURRENT_SOURCE_DIR}${path}")
|
||||
find_file(PrefixInPATH_INCLUDE_DIR NAMES PrefixInPATH.h)
|
||||
message(STATUS "PrefixInPATH_INCLUDE_DIR='${PrefixInPATH_INCLUDE_DIR}'")
|
||||
endforeach()
|
||||
set(ENV{PATH} "${ENV_PATH}")
|
||||
@@ -0,0 +1,3 @@
|
||||
include(RunCMake)
|
||||
|
||||
run_cmake(PrefixInPATH)
|
||||
@@ -0,0 +1,4 @@
|
||||
-- PrefixInPATH_LIBRARY='PrefixInPATH_LIBRARY-NOTFOUND'
|
||||
-- PrefixInPATH_LIBRARY='.*/Tests/RunCMake/find_library/lib/libPrefixInPATH.a'
|
||||
-- PrefixInPATH_LIBRARY='.*/Tests/RunCMake/find_library/lib/libPrefixInPATH.a'
|
||||
-- PrefixInPATH_LIBRARY='.*/Tests/RunCMake/find_library/lib/libPrefixInPATH.a'
|
||||
@@ -0,0 +1,11 @@
|
||||
list(APPEND CMAKE_FIND_LIBRARY_PREFIXES lib)
|
||||
list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES .a)
|
||||
|
||||
set(ENV_PATH "$ENV{PATH}")
|
||||
foreach(path "/does_not_exist" "" "/bin" "/sbin")
|
||||
unset(PrefixInPATH_LIBRARY CACHE)
|
||||
set(ENV{PATH} "${CMAKE_CURRENT_SOURCE_DIR}${path}")
|
||||
find_library(PrefixInPATH_LIBRARY NAMES PrefixInPATH)
|
||||
message(STATUS "PrefixInPATH_LIBRARY='${PrefixInPATH_LIBRARY}'")
|
||||
endforeach()
|
||||
set(ENV{PATH} "${ENV_PATH}")
|
||||
@@ -1,3 +1,4 @@
|
||||
include(RunCMake)
|
||||
|
||||
run_cmake(Created)
|
||||
run_cmake(PrefixInPATH)
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
project(${RunCMake_TEST} NONE)
|
||||
include(${RunCMake_TEST}.cmake)
|
||||
@@ -0,0 +1,4 @@
|
||||
-- PrefixInPATH_INCLUDE_DIR='PrefixInPATH_INCLUDE_DIR-NOTFOUND'
|
||||
-- PrefixInPATH_INCLUDE_DIR='.*/Tests/RunCMake/find_path/include'
|
||||
-- PrefixInPATH_INCLUDE_DIR='.*/Tests/RunCMake/find_path/include'
|
||||
-- PrefixInPATH_INCLUDE_DIR='.*/Tests/RunCMake/find_path/include'
|
||||
@@ -0,0 +1,8 @@
|
||||
set(ENV_PATH "$ENV{PATH}")
|
||||
foreach(path "/does_not_exist" "" "/bin" "/sbin")
|
||||
unset(PrefixInPATH_INCLUDE_DIR CACHE)
|
||||
set(ENV{PATH} "${CMAKE_CURRENT_SOURCE_DIR}${path}")
|
||||
find_path(PrefixInPATH_INCLUDE_DIR NAMES PrefixInPATH.h)
|
||||
message(STATUS "PrefixInPATH_INCLUDE_DIR='${PrefixInPATH_INCLUDE_DIR}'")
|
||||
endforeach()
|
||||
set(ENV{PATH} "${ENV_PATH}")
|
||||
@@ -0,0 +1,3 @@
|
||||
include(RunCMake)
|
||||
|
||||
run_cmake(PrefixInPATH)
|
||||
Reference in New Issue
Block a user