CMakeUserFindLibSVM

From KitwarePublic
Revision as of 07:21, 7 July 2010 by Xantares (talk | contribs)
Jump to navigationJump to search

Back


File:FindLibSVM.cmake


  #  -- Try to find LibSVM
   #
   #  LibSVM is a Library for Support Vector Machines
   #  available at http://www.csie.ntu.edu.tw/~cjlin/libsvm/
   #
   #  ------------------------------------------------------------------
   #
   #  -- Library usage example :
   #
   #  find_package (LibSVM 2.9.0)
   #  if (LIBSVM_FOUND)
   #     include_directories (${LIBSVM_INCLUDE_DIRS})
   #     add_executable (foo foo.cpp)
   #     target_link_libraries (foo ${LIBSVM_LIBRARIES})
   #  endif ()
   #
   #  -- Show some debug information :
   #
   #  set (LIBSVM_DEBUG TRUE)
   #  find_package (LibSVM)
   #
   #  -------------------------------------------------------------------
   #
   #  -- This module defines :
   #
   #  LIBSVM_FOUND - the system has LibSVM
   #  LIBSVM_INCLUDE_DIR - where to find svm.h
   #  LIBSVM_INCLUDE_DIRS libsvm includes
   #  LIBSVM_LIBRARY - where to find the LibSVM library
   #  LIBSVM_LIBRARIES - aditional libraries
   #  LIBSVM_VERSION - version
   #  LIBSVM_MAJOR_VERSION - major version
   #  LIBSVM_MINOR_VERSION - minor version
   #  LIBSVM_SUBMINOR_VERSION - subminor version
   #  LIBSVM_ROOT_DIR - root dir (ex. /usr/local)
   #
   #  ------------------------------------------------------------------
   #
   #  Copyright (c) 2010 Julien Schueller <schueller@phimeca.com>
   #
   #  Redistribution and use is allowed according to the terms of the New
   #  BSD license.
   #  For details see the accompanying COPYING-CMAKE-SCRIPTS file.
   #
   # check for math header
   if (NOT HAVE_MATH_H)
     include (CheckIncludeFile)
     check_include_file (math.h HAVE_MATH_H)
   endif ()


   # set LIBSVM_INCLUDE_DIR
   if (NOT LIBSVM_INCLUDE_DIR)
     find_path (LIBSVM_INCLUDE_DIR
       NAMES
         svm.h
       PATHS
         ${LIBSVM_ROOT_DIR}/include
       PATH_SUFFIXES
         libsvm
         libsvm-2.0/libsvm
       DOC
         "LibSVM include directory"
     )
   endif ()


   # set LIBSVM_INCLUDE_DIR
   if (NOT LIBSVM_INCLUDE_DIRS)
     set (LIBSVM_INCLUDE_DIRS ${LIBSVM_INCLUDE_DIR})
   endif ()


   # version
   if (NOT LIBSVM_VERSION)
     set (LIBSVM_MAJOR_VERSION 0)
     set (LIBSVM_MINOR_VERSION 0)
     set (LIBSVM_SUBMINOR_VERSION 0)
     if (LIBSVM_INCLUDE_DIR)
       # LIBSVM_VERSION macro defined in svm.h since version 2.8.9
       file (STRINGS "${LIBSVM_INCLUDE_DIR}/svm.h" _VERSION_STRING REGEX ".*LIBSVM_VERSION.*")
       if (_VERSION_STRING)
         string (REGEX REPLACE ".*_VERSION[ ]+([0-9]+)" "\\1" _VERSION_NUMBER "${_VERSION_STRING}")
         math (EXPR LIBSVM_MAJOR_VERSION "${_VERSION_NUMBER} / 100")
         math (EXPR LIBSVM_MINOR_VERSION "(${_VERSION_NUMBER} % 100 ) / 10")
         math (EXPR LIBSVM_SUBMINOR_VERSION "${_VERSION_NUMBER} % 10")
       endif ()
     endif ()
     set (LIBSVM_VERSION "${LIBSVM_MAJOR_VERSION}.${LIBSVM_MINOR_VERSION}.${LIBSVM_SUBMINOR_VERSION}")
   endif ()


   # check version
   set (_LIBSVM_VERSION_MATCH TRUE)
   set (_REQUIRED_VERSION "${LIBSVM_FIND_VERSION_MAJOR}.${LIBSVM_FIND_VERSION_MINOR}.${LIBSVM_FIND_VERSION_PATCH}")
   if (LIBSVM_FIND_VERSION)
     if (LIBSVM_FIND_VERSION_EXACT)
       if ("${_REQUIRED_VERSION}" VERSION_EQUAL "${LIBSVM_VERSION}")
       else()
         set (_LIBSVM_VERSION_MATCH FALSE)
       endif ()
     else ()
       if ("${_REQUIRED_VERSION}" VERSION_GREATER "${LIBSVM_VERSION}")
         set (_LIBSVM_VERSION_MATCH FALSE)
       endif ()
     endif ()
   endif ()


   # set LIBSVM_LIBRARY
   if(NOT LIBSVM_LIBRARY)
     find_library (LIBSVM_LIBRARY
       NAMES
         svm
       PATHS
         ${LIBSVM_ROOT_DIR}/lib
       DOC
         "LibSVM library location"
     )
   endif ()


   # set LIBSVM_LIBRARIES
   if (NOT LIBSVM_LIBRARIES)
     set (LIBSVM_LIBRARIES ${LIBSVM_LIBRARY})
     # link with math library on unix
     if (UNIX)
       list (APPEND LIBSVM_LIBRARIES "-lm")
     endif ()
   endif ()


   # root dir
   if (NOT LIBSVM_ROOT_DIR)
     # try to guess root dir from include dir
     if (LIBSVM_INCLUDE_DIR)
       string (REGEX REPLACE "(.*)/include/libsvm/?" "\\1" LIBSVM_ROOT_DIR "${LIBSVM_INCLUDE_DIR}")
     # try to guess root dir from library dir
     elseif (LIBSVM_LIBRARY)
       get_filename_component (_LIBRARY_DIR ${LIBSVM_LIBRARY} PATH)
       string (REGEX REPLACE "(.*)/lib[0-9]*/?" "\\1" LIBSVM_ROOT_DIR "${_LIBRARY_DIR}")
     endif ()
   endif ()


   # debug
   if (LIBSVM_DEBUG)
     message (STATUS "LIBSVM_LIBRARY: ${LIBSVM_LIBRARY}")
     message (STATUS "LIBSVM_LIBRARIES: ${LIBSVM_LIBRARIES}")
     message (STATUS "LIBSVM_INCLUDE_DIR: ${LIBSVM_INCLUDE_DIR}")
     message (STATUS "LIBSVM_INCLUDE_DIRS: ${LIBSVM_INCLUDE_DIRS}")
     message (STATUS "LIBSVM_ROOT_DIR: ${LIBSVM_ROOT_DIR}")
     message (STATUS "LIBSVM_VERSION: ${LIBSVM_VERSION}")
     message (STATUS "LIBSVM_MAJOR_VERSION: ${LIBSVM_MAJOR_VERSION}")
     message (STATUS "LIBSVM_MINOR_VERSION: ${LIBSVM_MINOR_VERSION}")
     message (STATUS "LIBSVM_SUBMINOR_VERSION: ${LIBSVM_SUBMINOR_VERSION}")
   endif ()


   # handle REQUIRED and QUIET options
   include (FindPackageHandleStandardArgs)
   find_package_handle_standard_args (LibSVM DEFAULT_MSG LIBSVM_LIBRARY
     _LIBSVM_VERSION_MATCH
     HAVE_MATH_H
     LIBSVM_INCLUDE_DIR
     LIBSVM_INCLUDE_DIRS
     LIBSVM_LIBRARIES
     LIBSVM_ROOT_DIR
     LIBSVM_VERSION
   )


   mark_as_advanced (
     LIBSVM_LIBRARY
     LIBSVM_LIBRARIES
     LIBSVM_INCLUDE_DIR
     LIBSVM_INCLUDE_DIRS
     LIBSVM_ROOT_DIR
     LIBSVM_VERSION
   )

Back



CMake: [Welcome | Site Map]