Difference between revisions of "CMakeUserFindLibSVM"

From KitwarePublic
Jump to navigationJump to search
Line 3: Line 3:
[[File:FindLibSVM.cmake]]
[[File:FindLibSVM.cmake]]
-----
-----
    #  -- Try to find LibSVM
  #  -- Try to find LibSVM
     #
     #
     #  LibSVM is a Library for Support Vector Machines
     #  LibSVM is a Library for Support Vector Machines
Line 33: Line 33:
     #  LIBSVM_LIBRARY - where to find the LibSVM library
     #  LIBSVM_LIBRARY - where to find the LibSVM library
     #  LIBSVM_LIBRARIES - aditional libraries
     #  LIBSVM_LIBRARIES - aditional libraries
     #  LIBSVM_VERSION - library version
     #  LIBSVM_VERSION - version
     #  LIBSVM_MAJOR_VERSION
     #  LIBSVM_MAJOR_VERSION - major version
     #  LIBSVM_MINOR_VERSION
     #  LIBSVM_MINOR_VERSION - minor version
     #  LIBSVM_SUBMINOR_VERSION
     #  LIBSVM_SUBMINOR_VERSION - subminor version
    #  LIBSVM_ROOT_DIR - root dir (ex. /usr/local)
     #
     #
     #  ------------------------------------------------------------------
     #  ------------------------------------------------------------------
Line 46: Line 47:
     #  For details see the accompanying COPYING-CMAKE-SCRIPTS file.
     #  For details see the accompanying COPYING-CMAKE-SCRIPTS file.
     #
     #
   
 
     # check for math header
     # check for math header
     if (NOT HAVE_MATH_H)
     if (NOT HAVE_MATH_H)
Line 52: Line 53:
       check_include_file (math.h HAVE_MATH_H)
       check_include_file (math.h HAVE_MATH_H)
     endif ()
     endif ()
   
 
   
 
     # set LIBSVM_INCLUDE_DIR
     # set LIBSVM_INCLUDE_DIR
     if (NOT LIBSVM_INCLUDE_DIR)
     if (NOT LIBSVM_INCLUDE_DIR)
Line 59: Line 60:
         NAMES
         NAMES
           svm.h
           svm.h
         PATH
         PATHS
           /usr/include
           ${LIBSVM_ROOT_DIR}/include
          /usr/local/include
          /opt/local/include
          /sw/include
         PATH_SUFFIXES
         PATH_SUFFIXES
           libsvm
           libsvm
Line 71: Line 69:
       )
       )
     endif ()
     endif ()
   
 
   
 
     # set LIBSVM_INCLUDE_DIR
     # set LIBSVM_INCLUDE_DIR
     if (NOT LIBSVM_INCLUDE_DIRS)
     if (NOT LIBSVM_INCLUDE_DIRS)
       set (LIBSVM_INCLUDE_DIRS ${LIBSVM_INCLUDE_DIR})
       set (LIBSVM_INCLUDE_DIRS ${LIBSVM_INCLUDE_DIR})
     endif ()
     endif ()
   
 
   
 
     # version
     # version
     if (NOT LIBSVM_VERSION)
     if (NOT LIBSVM_VERSION)
      # version defined in svm.h since version 2.9
       set (LIBSVM_MAJOR_VERSION 0)
       set (LIBSVM_MAJOR_VERSION 0)
       set (LIBSVM_MINOR_VERSION 0)
       set (LIBSVM_MINOR_VERSION 0)
       set (LIBSVM_SUBMINOR_VERSION 0)
       set (LIBSVM_SUBMINOR_VERSION 0)
       if (LIBSVM_INCLUDE_DIR)
       if (LIBSVM_INCLUDE_DIR)
         file (STRINGS "${LIBSVM_INCLUDE_DIR}/svm.h" _VERSION_STRING
        # LIBSVM_VERSION macro defined in svm.h since version 2.8.9
          REGEX ".*LIBSVM_VERSION.*")
         file (STRINGS "${LIBSVM_INCLUDE_DIR}/svm.h" _VERSION_STRING REGEX ".*LIBSVM_VERSION.*")
         if (_VERSION_STRING)
         if (_VERSION_STRING)
           string (REGEX REPLACE ".*_VERSION[ ]+([0-9]+)" "\\1" _VERSION_NUMBER "${_VERSION_STRING}")
           string (REGEX REPLACE ".*_VERSION[ ]+([0-9]+)" "\\1" _VERSION_NUMBER "${_VERSION_STRING}")
Line 97: Line 94:
       set (LIBSVM_VERSION "${LIBSVM_MAJOR_VERSION}.${LIBSVM_MINOR_VERSION}.${LIBSVM_SUBMINOR_VERSION}")
       set (LIBSVM_VERSION "${LIBSVM_MAJOR_VERSION}.${LIBSVM_MINOR_VERSION}.${LIBSVM_SUBMINOR_VERSION}")
     endif ()
     endif ()
   
 
   
 
   
 
     # check version
     # check version
     set (_LIBSVM_VERSION_MATCH TRUE)
     set (_LIBSVM_VERSION_MATCH TRUE)
Line 115: Line 112:
       endif ()
       endif ()
     endif ()
     endif ()
   
 
   
 
     # set LIBSVM_LIBRARY
     # set LIBSVM_LIBRARY
     if(NOT LIBSVM_LIBRARY)
     if(NOT LIBSVM_LIBRARY)
Line 123: Line 120:
           svm
           svm
         PATHS
         PATHS
           /usr/lib
           ${LIBSVM_ROOT_DIR}/lib
          /usr/local/lib
          /opt/local/lib
          /sw/lib
         DOC
         DOC
           "LibSVM library location"
           "LibSVM library location"
       )
       )
     endif ()
     endif ()
   
 
   
 
     # set LIBSVM_LIBRARIES
     # set LIBSVM_LIBRARIES
     if (NOT LIBSVM_LIBRARIES)
     if (NOT LIBSVM_LIBRARIES)
       set (LIBSVM_LIBRARIES ${LIBSVM_LIBRARY})
       set (LIBSVM_LIBRARIES ${LIBSVM_LIBRARY})
   
 
       # link with math library on unix
       # link with math library on unix
       if (UNIX)
       if (UNIX)
Line 142: Line 136:
       endif ()
       endif ()
     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
     # handle REQUIRED and QUIET options
     include (FindPackageHandleStandardArgs)
     include (FindPackageHandleStandardArgs)
Line 152: Line 174:
       LIBSVM_INCLUDE_DIRS
       LIBSVM_INCLUDE_DIRS
       LIBSVM_LIBRARIES
       LIBSVM_LIBRARIES
      LIBSVM_ROOT_DIR
       LIBSVM_VERSION
       LIBSVM_VERSION
     )
     )
   
 
   
 
     mark_as_advanced (
     mark_as_advanced (
       LIBSVM_LIBRARY
       LIBSVM_LIBRARY
Line 161: Line 184:
       LIBSVM_INCLUDE_DIR
       LIBSVM_INCLUDE_DIR
       LIBSVM_INCLUDE_DIRS
       LIBSVM_INCLUDE_DIRS
      LIBSVM_ROOT_DIR
       LIBSVM_VERSION
       LIBSVM_VERSION
      LIBSVM_MAJOR_VERSION
      LIBSVM_MINOR_VERSION
      LIBSVM_SUBMINOR_VERSION
     )
     )
   
   
    # 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_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 ()


-----
-----

Revision as of 07:21, 7 July 2010

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]