CMakeUserFindLibSVM: Difference between revisions

From KitwarePublic
Jump to navigationJump to search
No edit summary
No edit summary
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
    #  available at http://www.csie.ntu.edu.tw/~cjlin/libsvm/
  #  available at http://www.csie.ntu.edu.tw/~cjlin/libsvm/
    #
  #
    #  ------------------------------------------------------------------
  #  ------------------------------------------------------------------
    #
  #
    #  -- Library usage example :
  #  -- Library usage example :
    #
  #
    #  find_package (LibSVM 2.9.0)
  #  find_package (LibSVM 2.9.0)
    #  if (LIBSVM_FOUND)
  #  if (LIBSVM_FOUND)
    #    include_directories (${LIBSVM_INCLUDE_DIRS})
  #    include_directories (${LIBSVM_INCLUDE_DIRS})
    #    add_executable (foo foo.cpp)
  #    add_executable (foo foo.cpp)
    #    target_link_libraries (foo ${LIBSVM_LIBRARIES})
  #    target_link_libraries (foo ${LIBSVM_LIBRARIES})
    #  endif ()
  #  endif ()
    #
  #
    #  -- Show some debug information :
  #  -- Show some debug information :
    #
  #
    #  set (LIBSVM_DEBUG TRUE)
  #  set (LIBSVM_DEBUG TRUE)
    #  find_package (LibSVM)
  #  find_package (LibSVM)
    #
  #
    #  -------------------------------------------------------------------
  #  -------------------------------------------------------------------
    #
  #
    #  -- This module defines :
  #  -- This module defines :
    #
  #
    #  LIBSVM_FOUND - the system has LibSVM
  #  LIBSVM_FOUND - the system has LibSVM
    #  LIBSVM_INCLUDE_DIR - where to find svm.h
  #  LIBSVM_INCLUDE_DIR - where to find svm.h
    #  LIBSVM_INCLUDE_DIRS libsvm includes
  #  LIBSVM_INCLUDE_DIRS libsvm includes
    #  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 - version
  #  LIBSVM_VERSION - version
    #  LIBSVM_MAJOR_VERSION - major version
  #  LIBSVM_MAJOR_VERSION - major version
    #  LIBSVM_MINOR_VERSION - minor version
  #  LIBSVM_MINOR_VERSION - minor version
    #  LIBSVM_SUBMINOR_VERSION - subminor version
  #  LIBSVM_SUBMINOR_VERSION - subminor version
    #  LIBSVM_ROOT_DIR - root dir (ex. /usr/local)
  #  LIBSVM_ROOT_DIR - root dir (ex. /usr/local)
    #
  #
    #  ------------------------------------------------------------------
  #  ------------------------------------------------------------------
    #
  #
    #  Copyright (c) 2010 Julien Schueller <schueller@phimeca.com>
  #  Copyright (c) 2010 Julien Schueller <schueller at phimeca dot com>
    #
  #
    #  Redistribution and use is allowed according to the terms of the New
  #  Redistribution and use is allowed according to the terms of the New
    #  BSD license.
  #  BSD license.
    #  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)
      include (CheckIncludeFile)
    include (CheckIncludeFile)
      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)
      find_path (LIBSVM_INCLUDE_DIR
    find_path (LIBSVM_INCLUDE_DIR
        NAMES
      NAMES
          svm.h
        svm.h
        PATHS
      PATHS
          ${LIBSVM_ROOT_DIR}/include
        ${LIBSVM_ROOT_DIR}/include
        PATH_SUFFIXES
      PATH_SUFFIXES
          libsvm
        libsvm
          libsvm-2.0/libsvm
        libsvm-2.0/libsvm
        DOC
      DOC
          "LibSVM include directory"
        "LibSVM include directory"
      )
    )
    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)
      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)
        # LIBSVM_VERSION macro defined in svm.h since version 2.8.9
      # LIBSVM_VERSION macro defined in svm.h since version 2.8.9
        file (STRINGS "${LIBSVM_INCLUDE_DIR}/svm.h" _VERSION_STRING 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}")
          math (EXPR LIBSVM_MAJOR_VERSION "${_VERSION_NUMBER} / 100")
        math (EXPR LIBSVM_MAJOR_VERSION "${_VERSION_NUMBER} / 100")
          math (EXPR LIBSVM_MINOR_VERSION "(${_VERSION_NUMBER} % 100 ) / 10")
        math (EXPR LIBSVM_MINOR_VERSION "(${_VERSION_NUMBER} % 100 ) / 10")
          math (EXPR LIBSVM_SUBMINOR_VERSION "${_VERSION_NUMBER} % 10")
        math (EXPR LIBSVM_SUBMINOR_VERSION "${_VERSION_NUMBER} % 10")
        endif ()
       endif ()
       endif ()
      set (LIBSVM_VERSION "${LIBSVM_MAJOR_VERSION}.${LIBSVM_MINOR_VERSION}.${LIBSVM_SUBMINOR_VERSION}")
     endif ()
     endif ()
    set (LIBSVM_VERSION "${LIBSVM_MAJOR_VERSION}.${LIBSVM_MINOR_VERSION}.${LIBSVM_SUBMINOR_VERSION}")
  endif ()






    # check version
  # check version
    set (_LIBSVM_VERSION_MATCH TRUE)
  set (_LIBSVM_VERSION_MATCH TRUE)
    set (_REQUIRED_VERSION "${LIBSVM_FIND_VERSION_MAJOR}.${LIBSVM_FIND_VERSION_MINOR}.${LIBSVM_FIND_VERSION_PATCH}")
  set (_REQUIRED_VERSION "${LibSVM_FIND_VERSION_MAJOR}.${LibSVM_FIND_VERSION_MINOR}.${LibSVM_FIND_VERSION_PATCH}")
    if (LIBSVM_FIND_VERSION)
  if (LibSVM_FIND_VERSION AND _VERSION_STRING)
      if (LIBSVM_FIND_VERSION_EXACT)
    if (LibSVM_FIND_VERSION_EXACT)
        if ("${_REQUIRED_VERSION}" VERSION_EQUAL "${LIBSVM_VERSION}")
      if ("${_REQUIRED_VERSION}" VERSION_EQUAL "${LIBSVM_VERSION}")
        else()
      else()
          set (_LIBSVM_VERSION_MATCH FALSE)
        set (_LIBSVM_VERSION_MATCH FALSE)
        endif ()
      endif ()
      else ()
    else ()
        if ("${_REQUIRED_VERSION}" VERSION_GREATER "${LIBSVM_VERSION}")
      if ("${_REQUIRED_VERSION}" VERSION_GREATER "${LIBSVM_VERSION}")
          set (_LIBSVM_VERSION_MATCH FALSE)
        set (_LIBSVM_VERSION_MATCH FALSE)
        endif ()
       endif ()
       endif ()
     endif ()
     endif ()
  endif ()




    # set LIBSVM_LIBRARY
  # set LIBSVM_LIBRARY
    if(NOT LIBSVM_LIBRARY)
  if(NOT LIBSVM_LIBRARY)
      find_library (LIBSVM_LIBRARY
    find_library (LIBSVM_LIBRARY
        NAMES
      NAMES
          svm
        svm
        PATHS
      PATHS
          ${LIBSVM_ROOT_DIR}/lib
        ${LIBSVM_ROOT_DIR}/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)
        list (APPEND LIBSVM_LIBRARIES "-lm")
      list (APPEND LIBSVM_LIBRARIES "-lm")
      endif ()
     endif ()
     endif ()
  endif ()




    # root dir
  # root dir
    if (NOT LIBSVM_ROOT_DIR)
  if (NOT LIBSVM_ROOT_DIR)
      # try to guess root dir from include dir
    # try to guess root dir from include dir
      if (LIBSVM_INCLUDE_DIR)
    if (LIBSVM_INCLUDE_DIR)
        string (REGEX REPLACE "(.*)/include/libsvm/?" "\\1" LIBSVM_ROOT_DIR "${LIBSVM_INCLUDE_DIR}")
      string (REGEX REPLACE "(.*)/include.*" "\\1" LIBSVM_ROOT_DIR ${LIBSVM_INCLUDE_DIR})


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




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




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




    mark_as_advanced (
  mark_as_advanced (
      LIBSVM_LIBRARY
    LIBSVM_LIBRARY
      LIBSVM_LIBRARIES
    LIBSVM_LIBRARIES
      LIBSVM_INCLUDE_DIR
    LIBSVM_INCLUDE_DIR
      LIBSVM_INCLUDE_DIRS
    LIBSVM_INCLUDE_DIRS
      LIBSVM_ROOT_DIR
    LIBSVM_ROOT_DIR
      LIBSVM_VERSION
    LIBSVM_VERSION
    )
  )


-----
-----

Revision as of 13:23, 6 August 2010

Back


File:FindLibSVM.cmake


  1. -- 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 at phimeca dot 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 AND _VERSION_STRING)
   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.*" "\\1" LIBSVM_ROOT_DIR ${LIBSVM_INCLUDE_DIR})
   # try to guess root dir from library dir
   elseif (LIBSVM_LIBRARY)
     string (REGEX REPLACE "(.*)/lib[/|32|64].*" "\\1" LIBSVM_ROOT_DIR ${LIBSVM_LIBRARY})
   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]