1
0
espelhamento de https://github.com/tearshark/librf.git sincronizado 2024-10-01 15:57:07 +08:00
librf/cmake/SelectDynamicLibrary.cmake
2021-11-02 11:01:24 +08:00

162 linhas
5.9 KiB
CMake
Original Anotar Histórico

This file contains ambiguous Unicode characters

Este arquivo contém caracteres Unicode que podem ser confundidos com outros caracteres. Se você acha que isso é intencional, pode ignorar esse aviso com segurança. Use o botão Escapar para revelá-los invisible_runes_line=`Esta linha tem caracteres unicode invisíveis

include(SelectLibraryConfigurations)
macro(_acl_copy_dynamic_library_build_type basename build_type)
if(${build_type} STREQUAL "Debug")
set(_acl_build_type_dir "Debug")
set(_acl_runtime_output_dir ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG})
elseif(${build_type} STREQUAL "Release")
set(_acl_build_type_dir "Release")
set(_acl_runtime_output_dir ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE})
elseif(${build_type} STREQUAL "MinSizeRel")
set(_acl_build_type_dir "Release")
set(_acl_runtime_output_dir ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL})
elseif(${build_type} STREQUAL "RelWithDebInfo")
set(_acl_build_type_dir "Release")
set(_acl_runtime_output_dir ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO})
endif()
#message(STATUS "_acl_build_type_dir=${CMAKE_CURRENT_LIST_DIR}/../lib/${CMAKE_CXX_PLATFORM_ID}/${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}-${_acl_build_type_dir}")
#message(STATUS "_acl_runtime_output_dir=${_acl_runtime_output_dir}")
find_file(_acl_${basename}_dynamic_binary
NAMES "Acl.${basename}.dll" "Acl.${basename}.so"
PATHS
${CMAKE_CURRENT_LIST_DIR}/../bin/${CMAKE_CXX_PLATFORM_ID}/${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}-${_acl_build_type_dir}
NO_DEFAULT_PATH
)
if(NOT _acl_${basename}_dynamic_binary)
find_file(_acl_${basename}_dynamic_binary
NAMES "${basename}.dll" "${basename}.so"
PATHS
${CMAKE_CURRENT_LIST_DIR}/../bin/${CMAKE_CXX_PLATFORM_ID}/${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}-${_acl_build_type_dir}
NO_DEFAULT_PATH
)
endif()
#message(STATUS "_acl_runtime_dynamic_binary=${_acl_runtime_dynamic_binary}")
if(_acl_${basename}_dynamic_binary)
file(INSTALL ${_acl_${basename}_dynamic_binary} DESTINATION ${_acl_runtime_output_dir})
endif()
unset(_acl_build_type_dir)
unset(_acl_runtime_output_dir)
unset(_acl_${basename}_dynamic_binary CACHE)
endmacro(_acl_copy_dynamic_library_build_type)
macro(_acl_copy_dynamic_library basename)
if(DEFINED CMAKE_CONFIGURATION_TYPES)
foreach(build_type ${CMAKE_CONFIGURATION_TYPES})
_acl_copy_dynamic_library_build_type(${basename} ${build_type})
endforeach(build_type)
elseif(DEFINED CMAKE_BUILD_TYPE)
_acl_copy_dynamic_library_build_type(${basename} ${CMAKE_BUILD_TYPE})
else()
_acl_copy_dynamic_library_build_type(${basename} "Release")
endif()
endmacro(_acl_copy_dynamic_library)
macro(select_dynamic_library basename header)
#message(STATUS "basename=${basename}")
#message(STATUS "header=${header}")
# <20><><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE>ҵ<EFBFBD><D2B5><EFBFBD> basename ָ<><D6B8><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><E9A3AC>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>Ķ<EFBFBD>̬<EFBFBD><CCAC><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD>
#message(STATUS "${basename}_FOUND=${${basename}_FOUND}")
if(${basename}_FOUND)
_acl_copy_dynamic_library(${basename})
return()
endif()
# <20><><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ڵ<EFBFBD>·<EFBFBD><C2B7>
find_path(${basename}_INCLUDE_DIR ${header}
${CMAKE_CURRENT_LIST_DIR}/../include
NO_DEFAULT_PATH
)
# <20><><EFBFBD>ҵ<EFBFBD><D2B5>԰汾<D4B0>Ŀ<EFBFBD><C4BF>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
find_library("${basename}_LIBRARY_DEBUG"
NAMES "Acl.${basename}"
PATHS
${CMAKE_CURRENT_LIST_DIR}/../lib/${CMAKE_CXX_PLATFORM_ID}/${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}-Debug
NO_DEFAULT_PATH
)
if(NOT ${basename}_LIBRARY_DEBUG)
find_library("${basename}_LIBRARY_DEBUG"
NAMES "${basename}"
PATHS
${CMAKE_CURRENT_LIST_DIR}/../lib/${CMAKE_CXX_PLATFORM_ID}/${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}-Debug
NO_DEFAULT_PATH
)
endif()
# <20><><EFBFBD>ҷ<EFBFBD><D2B7>а<D0B0>Ŀ<EFBFBD><C4BF>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
find_library("${basename}_LIBRARY_RELEASE"
NAMES "Acl.${basename}"
PATHS
${CMAKE_CURRENT_LIST_DIR}/../lib/${CMAKE_CXX_PLATFORM_ID}/${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}-Release
NO_DEFAULT_PATH
)
if(NOT ${basename}_LIBRARY_RELEASE)
find_library("${basename}_LIBRARY_RELEASE"
NAMES "${basename}"
PATHS
${CMAKE_CURRENT_LIST_DIR}/../lib/${CMAKE_CXX_PLATFORM_ID}/${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}-Release
NO_DEFAULT_PATH
)
endif()
# ʹ<><CAB9>cmake<6B><65><EFBFBD>õ<EFBFBD> select_library_configurations <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ${basename}_LIBRARY <20>ֶ<EFBFBD>
select_library_configurations(${basename})
set(${basename}_FOUND FALSE)
if(${basename}_LIBRARY AND ${basename}_INCLUDE_DIR)
set(${basename}_FOUND TRUE)
if(NOT ${basename}_DIR)
set(${basename}_DIR ${CMAKE_CURRENT_LIST_DIR})
endif()
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>Ķ<EFBFBD>̬<EFBFBD>⵽Ŀ<E2B5BD><C4BF>Ŀ¼
_acl_copy_dynamic_library(${basename})
# <20><><EFBFBD><EFBFBD> basename ָ<><D6B8><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD>ӿ<EFBFBD>ģ<EFBFBD><C4A3>
if(NOT TARGET Acl::${basename})
add_library(Acl::${basename} UNKNOWN IMPORTED)
set_target_properties(Acl::${basename} PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${${basename}_INCLUDE_DIR}")
set_property(TARGET Acl::${basename} APPEND PROPERTY
IMPORTED_CONFIGURATIONS RELEASE)
set_target_properties(Acl::${basename} PROPERTIES
IMPORTED_LOCATION_RELEASE "${${basename}_LIBRARY_RELEASE}")
set_property(TARGET Acl::${basename} APPEND PROPERTY
IMPORTED_CONFIGURATIONS DEBUG)
set_target_properties(Acl::${basename} PROPERTIES
IMPORTED_LOCATION_DEBUG "${${basename}_LIBRARY_DEBUG}")
endif()
endif()
mark_as_advanced(${basename}_DIR)
mark_as_advanced(${basename}_LIBRARY)
mark_as_advanced(${basename}_INCLUDE_DIR)
#message(STATUS "${basename}_DIR=${${basename}_DIR}")
#message(STATUS "${basename}_LIBRARY=${${basename}_LIBRARY}")
#message(STATUS "${basename}_LIBRARY_DEBUG=${${basename}_LIBRARY_DEBUG}")
#message(STATUS "${basename}_LIBRARY_RELEASE=${${basename}_LIBRARY_RELEASE}")
#message(STATUS "${basename}_INCLUDE_DIR=${${basename}_INCLUDE_DIR}")
endmacro(select_dynamic_library)