CMakeUserFindLibSVM

From KitwarePublic
Revision as of 14:49, 24 January 2013 by Xantares (talk | contribs)
Jump to navigationJump to search

Back


File:FindLibSVM.cmake


  1. - Find LibSVM
  2. LibSVM is a Library for Support Vector Machines
  3. available at http://www.csie.ntu.edu.tw/~cjlin/libsvm/
  4. The module defines the following variables:
  5. LIBSVM_FOUND - the system has LibSVM
  6. LIBSVM_INCLUDE_DIR - where to find svm.h
  7. LIBSVM_INCLUDE_DIRS - libsvm includes
  8. LIBSVM_LIBRARY - where to find the LibSVM library
  9. LIBSVM_LIBRARIES - aditional libraries
  10. LIBSVM_MAJOR_VERSION - major version
  11. LIBSVM_MINOR_VERSION - minor version
  12. LIBSVM_PATCH_VERSION - patch version
  13. LIBSVM_VERSION_STRING - version (ex. 2.9.0)
  14. LIBSVM_ROOT_DIR - root dir (ex. /usr/local)
  1. =============================================================================
  2. Copyright (C) 2010-2013, Julien Schueller
  3. All rights reserved.
  4. Redistribution and use in source and binary forms, with or without
  5. modification, are permitted provided that the following conditions are met:
  6. 1. Redistributions of source code must retain the above copyright notice, this
  7. list of conditions and the following disclaimer.
  8. 2. Redistributions in binary form must reproduce the above copyright notice,
  9. this list of conditions and the following disclaimer in the documentation
  10. and/or other materials provided with the distribution.
  11. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
  12. ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  13. WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  14. DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
  15. ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  16. (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  17. LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  18. ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  19. (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  20. SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  1. The views and conclusions contained in the software and documentation are those
  2. of the authors and should not be interpreted as representing official policies,
  3. either expressed or implied, of the FreeBSD Project.
  4. =============================================================================
  1. set 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"

)


  1. set LIBSVM_INCLUDE_DIRS

if ( LIBSVM_INCLUDE_DIR )

 set ( LIBSVM_INCLUDE_DIRS ${LIBSVM_INCLUDE_DIR} )

endif ()


  1. version

set ( _VERSION_FILE ${LIBSVM_INCLUDE_DIR}/svm.h ) if ( EXISTS ${_VERSION_FILE} )

 # LIBSVM_VERSION_STRING macro defined in svm.h since version 2.8.9
 file ( STRINGS ${_VERSION_FILE} _VERSION_STRING REGEX ".*define[ ]+LIBSVM_VERSION[ ]+[0-9]+.*" )
 if ( _VERSION_STRING )
   string ( REGEX REPLACE ".*LIBSVM_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_PATCH_VERSION "${_VERSION_NUMBER} % 10" )
   set ( LIBSVM_VERSION_STRING "${LIBSVM_MAJOR_VERSION}.${LIBSVM_MINOR_VERSION}.${LIBSVM_PATCH_VERSION}" )
 endif ()

endif ()


  1. check version

set ( _LIBSVM_VERSION_MATCH TRUE ) if ( LibSVM_FIND_VERSION AND LIBSVM_VERSION_STRING )

 if ( LibSVM_FIND_VERSION_EXACT )
   if ( NOT LibSVM_FIND_VERSION VERSION_EQUAL LIBSVM_VERSION_STRING )
     set ( _LIBSVM_VERSION_MATCH FALSE )
   endif ()
 else ()
   if ( LIBSVM_VERSION_STRING  VERSION_LESS LibSVM_FIND_VERSION )
     set ( _LIBSVM_VERSION_MATCH FALSE )
   endif ()
 endif ()

endif ()


  1. set LIBSVM_LIBRARY

find_library ( LIBSVM_LIBRARY

 NAMES
   svm
 PATHS
   ${LIBSVM_ROOT_DIR}/lib
 DOC
   "LibSVM library location"

)


  1. set LIBSVM_LIBRARIES

set ( LIBSVM_LIBRARIES ${LIBSVM_LIBRARY} )

  1. link with math library on unix

if ( UNIX )

 list ( APPEND LIBSVM_LIBRARIES "-lm" )

endif ()


  1. try to guess root dir from include dir

if ( LIBSVM_INCLUDE_DIR )

 string ( REGEX REPLACE "(.*)/include.*" "\\1" LIBSVM_ROOT_DIR ${LIBSVM_INCLUDE_DIR} )
  1. try to guess root dir from library dir

elseif ( LIBSVM_LIBRARY )

 string ( REGEX REPLACE "(.*)/lib[/|32|64].*" "\\1" LIBSVM_ROOT_DIR ${LIBSVM_LIBRARY} )

endif ()


  1. handle REQUIRED and QUIET options

include ( FindPackageHandleStandardArgs ) find_package_handle_standard_args ( LibSVM DEFAULT_MSG LIBSVM_LIBRARY

 _LIBSVM_VERSION_MATCH
 LIBSVM_INCLUDE_DIR
 LIBSVM_INCLUDE_DIRS
 LIBSVM_LIBRARIES
 LIBSVM_ROOT_DIR

)


mark_as_advanced (

 LIBSVM_LIBRARY
 LIBSVM_LIBRARIES
 LIBSVM_INCLUDE_DIR
 LIBSVM_INCLUDE_DIRS
 LIBSVM_ROOT_DIR
 LIBSVM_VERSION_STRING
 LIBSVM_MAJOR_VERSION
 LIBSVM_MINOR_VERSION
 LIBSVM_PATCH_VERSION

)


Back



CMake: [Welcome | Site Map]