find_library: Add test covering lib->lib64 cases
Add a "CMakeOnly.find_library" test covering various cases involving lib->lib64 (non-)conversion. Comment out cases involving mixed path components "lib" and "lib64", such as lib/A/lib64 and lib64/A/lib, as these are known to be broken currently.
This commit is contained in:
parent
caeca30936
commit
1fe4b82a45
|
@ -23,6 +23,8 @@ add_CMakeOnly_test(AllFindModules)
|
||||||
|
|
||||||
add_CMakeOnly_test(TargetScope)
|
add_CMakeOnly_test(TargetScope)
|
||||||
|
|
||||||
|
add_CMakeOnly_test(find_library)
|
||||||
|
|
||||||
add_test(CMakeOnly.ProjectInclude ${CMAKE_CMAKE_COMMAND}
|
add_test(CMakeOnly.ProjectInclude ${CMAKE_CMAKE_COMMAND}
|
||||||
-DTEST=ProjectInclude
|
-DTEST=ProjectInclude
|
||||||
-DCMAKE_ARGS=-DCMAKE_PROJECT_ProjectInclude_INCLUDE=${CMAKE_CURRENT_SOURCE_DIR}/ProjectInclude/include.cmake
|
-DCMAKE_ARGS=-DCMAKE_PROJECT_ProjectInclude_INCLUDE=${CMAKE_CURRENT_SOURCE_DIR}/ProjectInclude/include.cmake
|
||||||
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
cmake_minimum_required(VERSION 2.8)
|
||||||
|
project(FindLibraryTest NONE)
|
||||||
|
|
||||||
|
set(CMAKE_FIND_DEBUG_MODE 1)
|
||||||
|
|
||||||
|
macro(test_find_library expected)
|
||||||
|
get_filename_component(dir ${expected} PATH)
|
||||||
|
get_filename_component(name ${expected} NAME)
|
||||||
|
string(REGEX REPLACE "lib/?64" "lib" dir "${dir}")
|
||||||
|
unset(LIB CACHE)
|
||||||
|
find_library(LIB
|
||||||
|
NAMES ${name}
|
||||||
|
PATHS ${CMAKE_CURRENT_SOURCE_DIR}/${dir}
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
if(LIB)
|
||||||
|
# Convert to relative path for comparison to expected location.
|
||||||
|
file(RELATIVE_PATH REL_LIB "${CMAKE_CURRENT_SOURCE_DIR}" "${LIB}")
|
||||||
|
|
||||||
|
# Debugging output.
|
||||||
|
if(CMAKE_FIND_DEBUG_MODE)
|
||||||
|
message(STATUS "Library ${expected} searched as ${dir}, found as [${REL_LIB}].")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Check and report failure.
|
||||||
|
if(NOT "${REL_LIB}" STREQUAL "${expected}")
|
||||||
|
message(SEND_ERROR "Library ${l} should have been [${expected}] but was [${REL_LIB}]")
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
message(SEND_ERROR "Library ${expected} searched as ${dir}, NOT FOUND!")
|
||||||
|
endif()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
set(CMAKE_FIND_LIBRARY_PREFIXES "lib")
|
||||||
|
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
|
||||||
|
set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS TRUE)
|
||||||
|
|
||||||
|
set(CMAKE_SIZEOF_VOID_P 4)
|
||||||
|
foreach(lib
|
||||||
|
lib/A/lib/libtest1.a
|
||||||
|
lib/A/libtest1.a
|
||||||
|
lib/libtest1.a
|
||||||
|
lib/libtest2.a
|
||||||
|
lib/libtest3.a
|
||||||
|
lib/libtest3.a
|
||||||
|
)
|
||||||
|
test_find_library(${lib})
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
set(CMAKE_SIZEOF_VOID_P 8)
|
||||||
|
foreach(lib64
|
||||||
|
lib/64/libtest2.a
|
||||||
|
#lib/A/lib64/libtest3.a # known breakage
|
||||||
|
lib/libtest3.a
|
||||||
|
#lib64/A/lib/libtest2.a # known breakage
|
||||||
|
lib64/A/lib64/libtest1.a
|
||||||
|
lib64/A/libtest1.a
|
||||||
|
lib64/libtest1.a
|
||||||
|
)
|
||||||
|
test_find_library(${lib64})
|
||||||
|
endforeach()
|
Loading…
Reference in New Issue