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 | |||
# | |||
# 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 () | ||
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 () | 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 () | ||
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 () | ||
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 | |||
) | |||
----- | ----- |
Revision as of 13:23, 6 August 2010
- -- 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 )