#国密加解密库 message(STATUS "***** Find SM Library *****") #寻找头文件 find_path(SM_INCLUDE_DIR NAMES smclass.h PATHS ${CMAKE_CURRENT_LIST_DIR}/inc NO_DEFAULT_PATH ) #查找源文件 find_path(SM_SOURCE_DIR NAMES smclass.cpp PATHS ${CMAKE_CURRENT_LIST_DIR}/src NO_DEFAULT_PATH ) #find_linrary查找的是“.lib”,“.a”,“.so”文件,不会查找.dll文件 #因此,在这里无法使用,直接使用list添加路径 # unset(SM_LIB CACHE) # find_library(SM_LIB # NAMES SM_DLL # HINTS ${CMAKE_CURRENT_LIST_DIR}/libs/win/x64 # NO_DEFAULT_PATH) # list(APPEND SM_LIB_LIBRARY ${SM_LIB}) # message(STATUS "SM_LIB: ${SM_LIB}") #查找库文件,需要判断操作系统,位数 if(CMAKE_SYSTEM_NAME MATCHES "Windows") if(CMAKE_SIZEOF_VOID_P EQUAL 8) if(CMAKE_BUILD_TYPE MATCHES "Debug") list(APPEND SM_LIB_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/libs/win/x64/with_debug_info/libSM_DLL.lib) list(APPEND SM_LIB_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/libs/win/x64/ucrtbased.dll) list(APPEND SM_LIB_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/libs/win/x64/vcruntime140d.dll) else() list(APPEND SM_LIB_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/libs/win/x64/libSM_DLL.lib) list(APPEND SM_LIB_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/libs/win/x64/ucrtbase.dll) list(APPEND SM_LIB_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/libs/win/x64/vcruntime140.dll) endif() elseif(CMAKE_SIZEOF_VOID_P EQUAL 4) if(CMAKE_BUILD_TYPE MATCHES "Debug") list(APPEND SM_LIB_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/libs/win/x86/with_debug_info/libSM_DLL.lib) list(APPEND SM_LIB_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/libs/win/x86/ucrtbased.dll) list(APPEND SM_LIB_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/libs/win/x86/vcruntime140d.dll) else() list(APPEND SM_LIB_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/libs/win/x86/libSM_DLL.lib) list(APPEND SM_LIB_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/libs/win/x86/ucrtbase.dll) list(APPEND SM_LIB_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/libs/win/x86/vcruntime140.dll) endif() endif() #添加Linux版本 elseif(CMAKE_SYSTEM_NAME MATCHES "Linux") if(CMAKE_BUILD_TYPE MATCHES "Debug") list(APPEND SM_LIB_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/libs/linux/x64/libSM_Dll.so) else() list(APPEND SM_LIB_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/libs/linux/x64/libSM_Dll.so) endif() endif() # message(STATUS "SM_LIB_LIBRARY: ${SM_LIB_LIBRARY}") # message(STATUS "SM_INCLUDE_DIR: ${SM_INCLUDE_DIR}") # message(STATUS "SM_SOURCE_DIR: ${SM_SOURCE_DIR}") # message(STATUS "SM_LIB_LIBRARY: ${SM_LIB_LIBRARY}") #设置查找到后的变量 if(SM_INCLUDE_DIR AND SM_SOURCE_DIR AND SM_LIB_LIBRARY) set(SM_FOUND TRUE) set(SM_VERSION "1.1.0") message(STATUS "include : SM_INCLUDE_DIR") message(STATUS "source : SM_SOURCE_DIR") message(STATUS "Library : SM_LIB_LIBRARY") else() set(SM_FOUND FALSE) endif() message(STATUS "---------------------------------")