réplica de
https://github.com/tearshark/librf.git
synced 2024-10-01 15:57:07 +08:00
162 líneas
5.9 KiB
CMake
162 líneas
5.9 KiB
CMake
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)
|