# Findwfassoc.cmake # ---------------- # Find wfassoc library and headers. # # This module requires the user to set wfassoc_ROOT to the installation # directory of wfassoc. The directory structure under wfassoc_ROOT must be: # bin/ - contains wfassoc_cdylib.dll # include/ - contains wfassoc.h and wfassoc.hpp # lib/ - contains wfassoc_cdylib.dll.lib (import library) # # This module defines the following variables: # wfassoc_FOUND - True if wfassoc was found # wfassoc_INCLUDE_DIRS - Path to wfassoc include directory # wfassoc_LIBRARIES - Path to wfassoc import library # wfassoc_DLL - Path to wfassoc DLL # wfassoc_ROOT - The root directory (user-provided) # # This module also creates the following imported targets: # wfassoc::wfassoc - Main wfassoc library (includes both include and link) # set(wfassoc_FOUND FALSE) # Require user to set wfassoc_ROOT if(NOT wfassoc_ROOT) message(FATAL_ERROR "wfassoc_ROOT must be set to the installation directory of wfassoc") endif() # Check existence of required subdirectories if(NOT EXISTS ${wfassoc_ROOT}) message(FATAL_ERROR "wfassoc_ROOT directory does not exist: ${wfassoc_ROOT}") endif() set(wfassoc_INCLUDE_DIR ${wfassoc_ROOT}/include) set(wfassoc_LIB_DIR ${wfassoc_ROOT}/lib) set(wfassoc_BIN_DIR ${wfassoc_ROOT}/bin) # Find header files if(EXISTS ${wfassoc_INCLUDE_DIR}/wfassoc.h AND EXISTS ${wfassoc_INCLUDE_DIR}/wfassoc.hpp) set(wfassoc_INCLUDE_DIRS ${wfassoc_INCLUDE_DIR}) else() message(SEND_ERROR "Missing wfassoc header files in ${wfassoc_INCLUDE_DIR}") return() endif() # Find import library (.lib) find_file(wfassoc_LIBRARIES NAMES wfassoc_cdylib.dll.lib PATHS ${wfassoc_LIB_DIR} NO_DEFAULT_PATH DOC "wfassoc import library" ) if(NOT wfassoc_LIBRARIES) message(SEND_ERROR "Missing wfassoc import library (wfassoc_cdylib.dll.lib) in ${wfassoc_LIB_DIR}") return() endif() # Find DLL file find_file(wfassoc_DLL NAMES wfassoc_cdylib.dll PATHS ${wfassoc_BIN_DIR} NO_DEFAULT_PATH DOC "wfassoc dynamic library" ) if(NOT wfassoc_DLL) message(SEND_ERROR "Missing wfassoc DLL (wfassoc_cdylib.dll) in ${wfassoc_BIN_DIR}") return() endif() # Everything found set(wfassoc_FOUND TRUE) # Mark variables as advanced for ccmake/cmake-gui mark_as_advanced(wfassoc_INCLUDE_DIRS wfassoc_LIBRARIES wfassoc_DLL) # Create imported target for wfassoc if(wfassoc_FOUND AND NOT TARGET wfassoc::wfassoc) add_library(wfassoc::wfassoc SHARED IMPORTED) # Set include directories set_target_properties(wfassoc::wfassoc PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${wfassoc_INCLUDE_DIRS} ) # Set import library location set_target_properties(wfassoc::wfassoc PROPERTIES IMPORTED_IMPLIB "${wfassoc_LIBRARIES}" IMPORTED_LOCATION "${wfassoc_DLL}" ) endif() # Optional: Print status message if(wfassoc_FOUND) message(STATUS "Found wfassoc:") message(STATUS " Root : ${wfassoc_ROOT}") message(STATUS " Include : ${wfassoc_INCLUDE_DIRS}") message(STATUS " Library : ${wfassoc_LIBRARIES}") message(STATUS " DLL : ${wfassoc_DLL}") endif()