CMakeUserFindLibSVM

From KitwarePublic
Revision as of 13:23, 6 August 2010 by Xantares (talk | contribs)
Jump to navigationJump to search

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]