|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- include(SelectLibraryConfigurations)
-
- if(NOT DEFINED CMAKE_PROCESSOR_ALIAS)
- MESSAGE(STATUS "operation system is ${CMAKE_CXX_PLATFORM_ID}")
- MESSAGE(STATUS "processor is ${CMAKE_HOST_SYSTEM_PROCESSOR}")
-
- if((${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "i386") OR (${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "AMD64") OR (${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "x86_64"))
- if(CMAKE_SIZEOF_VOID_P EQUAL 4)
- set(CMAKE_PROCESSOR_ALIAS "x86" CACHE STRING "Alias of processor")
- elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
- set(CMAKE_PROCESSOR_ALIAS "x64" CACHE STRING "Alias of processor")
- else()
- message(FATAL_ERROR "Unknown processor")
- endif()
- elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "aarch64")
- if(CMAKE_SIZEOF_VOID_P EQUAL 4)
- set(CMAKE_PROCESSOR_ALIAS "arm" CACHE STRING "Alias of processor")
- elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
- set(CMAKE_PROCESSOR_ALIAS "arm64" CACHE STRING "Alias of processor")
- else()
- message(FATAL_ERROR "Unknown processor")
- endif()
- else()
- message(FATAL_ERROR "Unknown processor")
- endif()
-
- message(STATUS "CMAKE_PROCESSOR_ALIAS=${CMAKE_PROCESSOR_ALIAS}")
- endif()
-
-
- 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}")
-
- # Ѿҵ basename ָģ飬ֻʱĶ̬Ĺ
- #message(STATUS "${basename}_FOUND=${${basename}_FOUND}")
- if(${basename}_FOUND)
- _acl_copy_dynamic_library(${basename})
- return()
- endif()
-
-
-
- # ͷļڵ·
- find_path(${basename}_INCLUDE_DIR ${header}
- ${CMAKE_CURRENT_LIST_DIR}/../include
- NO_DEFAULT_PATH
- )
-
- # ҵ汾Ŀļ·
- 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()
-
- # ҷа汾Ŀļ·
- 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()
-
- # ʹcmakeõ select_library_configurations ${basename}_LIBRARY ֶ
- 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()
-
- # ʱĶ̬ĿĿ¼
- _acl_copy_dynamic_library(${basename})
-
- # basename ָĵӿģ
- 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)
|