📄 findboost.cmake
字号:
# - Try to find Boost include dirs and libraries# Usage of this module as follows:## SET(Boost_USE_STATIC_LIBS ON)# SET(Boost_USE_MULTITHREAD OFF)# FIND_PACKAGE( Boost 1.34.1 COMPONENTS date_time filesystem iostreams ... )## The Boost_ADDITIONAL_VERSIONS variable can be used to specify a list of# boost version numbers that should be taken into account when searching# for the libraries. Unfortunately boost puts the version number into the# actual filename for the libraries, so this might be needed in the future# when new Boost versions are released.## Currently this module searches for the following version numbers:# 1.33, 1.33.0, 1.33.1, 1.34, 1.34.0, 1.34.1, 1.35, 1.35.0, 1.35.1, 1.36, # 1.36.0, 1.36.1## The components list needs to be the actual names of boost libraries, that is# the part of the actual library files that differ on different libraries. So# its "date_time" for "libboost_date_time...". Anything else will result in# errors## You can provide a minimum version number that should be used. If you provide this # version number and specify the REQUIRED attribute, this module will fail if it# can't find the specified or a later version. If you specify a version number this is# automatically put into the considered list of version numbers and thus doesn't need# to be specified in the Boost_ADDITIONAL_VERSIONS variable## Variables used by this module, they can change the default behaviour and need to be set# before calling find_package:# Boost_USE_MULTITHREAD Can be set to OFF to use the non-multithreaded# boost libraries. Defaults to ON.# Boost_USE_STATIC_LIBS Can be set to ON to force the use of the static# boost libraries. Defaults to OFF.# Boost_ADDITIONAL_VERSIONS A list of version numbers to use for searching# the boost include directory. The default list# of version numbers is:# 1.33, 1.33.0, 1.33.1, 1.34, 1.34.0, 1.34.1, # 1.35, 1.35.0, 1.35.1, 1.36, 1.36.0, 1.36.1# If you want to look for an older or newer# version set this variable to a list of# strings, where each string contains a number, i.e.# SET(Boost_ADDITIONAL_VERSIONS "0.99.0" "1.35.0")# BOOST_ROOT or BOOSTROOT Preferred installation prefix for searching for Boost,# set this if the module has problems finding the proper Boost installation# BOOST_INCLUDEDIR Set this to the include directory of Boost, if the# module has problems finding the proper Boost installation# BOOST_LIBRARYDIR Set this to the lib directory of Boost, if the# module has problems finding the proper Boost installation## The last three variables are available also as environment variables### Variables defined by this module:## Boost_FOUND System has Boost, this means the include dir was found,# as well as all the libraries specified in the COMPONENTS list# Boost_INCLUDE_DIRS Boost include directories, not cached# Boost_INCLUDE_DIR This is almost the same as above, but this one is cached and may be# modified by advanced users# Boost_LIBRARIES Link these to use the Boost libraries that you specified, not cached# Boost_LIBRARY_DIRS The path to where the Boost library files are.# Boost_VERSION The version number of the boost libraries that have been found,# same as in version.hpp from Boost# Boost_LIB_VERSION The version number in filename form as its appended to the library filenames# Boost_MAJOR_VERSION major version number of boost# Boost_MINOR_VERSION minor version number of boost# Boost_SUBMINOR_VERSION subminor version number of boost# Boost_LIB_DIAGNOSTIC_DEFINITIONS Only set on windows. Can be used with add_definitions # to print diagnostic information about the automatic # linking done on windows.# For each component you list the following variables are set.# ATTENTION: The component names need to be in lower case, just as the boost# library names however the cmake variables use upper case for the component# part. So you'd get Boost_SERIALIZATION_FOUND for example.## Boost_${COMPONENT}_FOUND True IF the Boost library "component" was found.# Boost_${COMPONENT}_LIBRARY The absolute path of the Boost library "component".# Boost_${COMPONENT}_LIBRARY_DEBUG The absolute path of the debug version of the# Boost library "component".# Boost_${COMPONENT}_LIBRARY_RELEASE The absolute path of the release version of the# Boost library "component"## Copyright (c) 2006-2008 Andreas Schneider <mail@cynapses.org># Copyright (c) 2007 Wengo# Copyright (c) 2007 Mike Jackson# Copyright (c) 2008 Andreas Pakulat <apaku@gmx.de>## Redistribution AND use is allowed according to the terms of the New# BSD license.# For details see the accompanying COPYING-CMAKE-SCRIPTS file.#OPTION(Boost_USE_MULTITHREADED "Use the multithreaded versions of the Boost libraries" ON)if (Boost_FIND_VERSION_EXACT) if (Boost_FIND_VERSION_PATCH) set( _boost_TEST_VERSIONS "${Boost_FIND_VERSION_MAJOR}.${Boost_FIND_VERSION_MINOR}.${Boost_FIND_VERSION_PATCH}") else (Boost_FIND_VERSION_PATCH) set( _boost_TEST_VERSIONS "${Boost_FIND_VERSION_MAJOR}.${Boost_FIND_VERSION_MINOR}.0" "${Boost_FIND_VERSION_MAJOR}.${Boost_FIND_VERSION_MINOR}") endif (Boost_FIND_VERSION_PATCH)else (Boost_FIND_VERSION_EXACT) set( _boost_TEST_VERSIONS ${Boost_ADDITIONAL_VERSIONS} "1.36.1" "1.36.0" "1.36" "1.35.1" "1.35.0" "1.35" "1.34.1" "1.34.0" "1.34" "1.33.1" "1.33.0" "1.33" )endif (Boost_FIND_VERSION_EXACT)# The reason that we failed to find Boost. This will be set to a# user-friendly message when we fail to find some necessary piece of# Boost.set(Boost_ERROR_REASON)############################################## Check the existence of the libraries.############################################## This macro was taken directly from the FindQt4.cmake file that is included# with the CMake distribution. This is NOT my work. All work was done by the# original authors of the FindQt4.cmake file. Only minor modifications were# made to remove references to Qt and make this file more generally applicable#########################################################################MACRO (_Boost_ADJUST_LIB_VARS basename) IF (Boost_INCLUDE_DIR ) IF (Boost_${basename}_LIBRARY_DEBUG AND Boost_${basename}_LIBRARY_RELEASE) # if the generator supports configuration types then set # optimized and debug libraries, or if the CMAKE_BUILD_TYPE has a value IF (CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE) SET(Boost_${basename}_LIBRARY optimized ${Boost_${basename}_LIBRARY_RELEASE} debug ${Boost_${basename}_LIBRARY_DEBUG}) ELSE(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE) # if there are no configuration types and CMAKE_BUILD_TYPE has no value # then just use the release libraries SET(Boost_${basename}_LIBRARY ${Boost_${basename}_LIBRARY_RELEASE} ) ENDIF(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE) SET(Boost_${basename}_LIBRARIES optimized ${Boost_${basename}_LIBRARY_RELEASE} debug ${Boost_${basename}_LIBRARY_DEBUG}) ENDIF (Boost_${basename}_LIBRARY_DEBUG AND Boost_${basename}_LIBRARY_RELEASE) # if only the release version was found, set the debug variable also to the release version IF (Boost_${basename}_LIBRARY_RELEASE AND NOT Boost_${basename}_LIBRARY_DEBUG) SET(Boost_${basename}_LIBRARY_DEBUG ${Boost_${basename}_LIBRARY_RELEASE}) SET(Boost_${basename}_LIBRARY ${Boost_${basename}_LIBRARY_RELEASE}) SET(Boost_${basename}_LIBRARIES ${Boost_${basename}_LIBRARY_RELEASE}) ENDIF (Boost_${basename}_LIBRARY_RELEASE AND NOT Boost_${basename}_LIBRARY_DEBUG) # if only the debug version was found, set the release variable also to the debug version IF (Boost_${basename}_LIBRARY_DEBUG AND NOT Boost_${basename}_LIBRARY_RELEASE) SET(Boost_${basename}_LIBRARY_RELEASE ${Boost_${basename}_LIBRARY_DEBUG}) SET(Boost_${basename}_LIBRARY ${Boost_${basename}_LIBRARY_DEBUG}) SET(Boost_${basename}_LIBRARIES ${Boost_${basename}_LIBRARY_DEBUG}) ENDIF (Boost_${basename}_LIBRARY_DEBUG AND NOT Boost_${basename}_LIBRARY_RELEASE) IF (Boost_${basename}_LIBRARY) SET(Boost_${basename}_LIBRARY ${Boost_${basename}_LIBRARY} CACHE FILEPATH "The Boost ${basename} library") GET_FILENAME_COMPONENT(Boost_LIBRARY_DIRS "${Boost_${basename}_LIBRARY}" PATH) SET(Boost_LIBRARY_DIRS ${Boost_LIBRARY_DIRS} CACHE FILEPATH "Boost library directory") SET(Boost_${basename}_FOUND ON CACHE INTERNAL "Whether the Boost ${basename} library found") ENDIF (Boost_${basename}_LIBRARY) ENDIF (Boost_INCLUDE_DIR ) # Make variables changeble to the advanced user MARK_AS_ADVANCED( Boost_${basename}_LIBRARY Boost_${basename}_LIBRARY_RELEASE Boost_${basename}_LIBRARY_DEBUG )ENDMACRO (_Boost_ADJUST_LIB_VARS)#-------------------------------------------------------------------------------SET( _boost_IN_CACHE TRUE)IF(Boost_INCLUDE_DIR) FOREACH(COMPONENT ${Boost_FIND_COMPONENTS}) STRING(TOUPPER ${COMPONENT} COMPONENT) IF(NOT Boost_${COMPONENT}_FOUND) SET( _boost_IN_CACHE FALSE) ENDIF(NOT Boost_${COMPONENT}_FOUND) ENDFOREACH(COMPONENT)ELSE(Boost_INCLUDE_DIR) SET( _boost_IN_CACHE FALSE)ENDIF(Boost_INCLUDE_DIR)IF (_boost_IN_CACHE) # in cache already SET(Boost_FOUND TRUE) FOREACH(COMPONENT ${Boost_FIND_COMPONENTS}) STRING(TOUPPER ${COMPONENT} COMPONENT) _Boost_ADJUST_LIB_VARS( ${COMPONENT} ) SET(Boost_LIBRARIES ${Boost_LIBRARIES} ${Boost_${COMPONENT}_LIBRARY}) ENDFOREACH(COMPONENT) SET(Boost_INCLUDE_DIRS ${Boost_INCLUDE_DIR}) IF(Boost_VERSION AND NOT "${Boost_VERSION}" STREQUAL "0") MATH(EXPR Boost_MAJOR_VERSION "${Boost_VERSION} / 100000") MATH(EXPR Boost_MINOR_VERSION "${Boost_VERSION} / 100 % 1000") MATH(EXPR Boost_SUBMINOR_VERSION "${Boost_VERSION} % 100") ENDIF(Boost_VERSION AND NOT "${Boost_VERSION}" STREQUAL "0")ELSE (_boost_IN_CACHE) # Need to search for boost IF(WIN32) # In windows, automatic linking is performed, so you do not have # to specify the libraries. If you are linking to a dynamic # runtime, then you can choose to link to either a static or a # dynamic Boost library, the default is to do a static link. You # can alter this for a specific library "whatever" by defining # BOOST_WHATEVER_DYN_LINK to force Boost library "whatever" to be # linked dynamically. Alternatively you can force all Boost # libraries to dynamic link by defining BOOST_ALL_DYN_LINK. # This feature can be disabled for Boost library "whatever" by # defining BOOST_WHATEVER_NO_LIB, or for all of Boost by defining # BOOST_ALL_NO_LIB. # If you want to observe which libraries are being linked against # then defining BOOST_LIB_DIAGNOSTIC will cause the auto-linking # code to emit a #pragma message each time a library is selected # for linking. SET(Boost_LIB_DIAGNOSTIC_DEFINITIONS "-DBOOST_LIB_DIAGNOSTIC" CACHE STRING "Boost diagnostic define") ENDIF(WIN32) SET(_boost_INCLUDE_SEARCH_DIRS C:/boost/include "C:/boost" "$ENV{ProgramFiles}/boost/boost_${Boost_FIND_VERSION_MAJOR}_${Boost_FIND_VERSION_MINOR}_${Boost_FIND_VERSION_PATCH}" "$ENV{ProgramFiles}/Boost" /sw/local/include ) SET(_boost_LIBRARIES_SEARCH_DIRS C:/boost/lib "C:/boost" "$ENV{ProgramFiles}/boost/boost_${Boost_FIND_VERSION_MAJOR}_${Boost_FIND_VERSION_MINOR}_${Boost_FIND_VERSION_PATCH}/lib" "$ENV{ProgramFiles}/Boost" /sw/local/lib ) # If BOOST_ROOT was defined in the environment, use it. if (NOT BOOST_ROOT AND NOT $ENV{BOOST_ROOT} STREQUAL "") set(BOOST_ROOT $ENV{BOOST_ROOT}) endif(NOT BOOST_ROOT AND NOT $ENV{BOOST_ROOT} STREQUAL "") # If BOOSTROOT was defined in the environment, use it. if (NOT BOOST_ROOT AND NOT $ENV{BOOSTROOT} STREQUAL "") set(BOOST_ROOT $ENV{BOOSTROOT}) endif(NOT BOOST_ROOT AND NOT $ENV{BOOSTROOT} STREQUAL "") # If BOOST_INCLUDEDIR was defined in the environment, use it. IF( NOT $ENV{BOOST_INCLUDEDIR} STREQUAL "" ) set(BOOST_INCLUDEDIR $ENV{BOOST_INCLUDEDIR}) ENDIF( NOT $ENV{BOOST_INCLUDEDIR} STREQUAL "" ) # If BOOST_LIBRARYDIR was defined in the environment, use it. IF( NOT $ENV{BOOST_LIBRARYDIR} STREQUAL "" ) set(BOOST_LIBRARYDIR $ENV{BOOST_LIBRARYDIR}) ENDIF( NOT $ENV{BOOST_LIBRARYDIR} STREQUAL "" ) IF( BOOST_ROOT ) file(TO_CMAKE_PATH ${BOOST_ROOT} BOOST_ROOT) SET(_boost_INCLUDE_SEARCH_DIRS ${BOOST_ROOT}/include ${BOOST_ROOT} ${_boost_INCLUDE_SEARCH_DIRS}) SET(_boost_LIBRARIES_SEARCH_DIRS ${BOOST_ROOT}/lib ${BOOST_ROOT}/stage/lib ${_boost_LIBRARIES_SEARCH_DIRS}) ENDIF( BOOST_ROOT ) IF( BOOST_INCLUDEDIR ) file(TO_CMAKE_PATH ${BOOST_INCLUDEDIR} BOOST_INCLUDEDIR) SET(_boost_INCLUDE_SEARCH_DIRS ${BOOST_INCLUDEDIR} ${_boost_INCLUDE_SEARCH_DIRS}) ENDIF( BOOST_INCLUDEDIR ) IF( BOOST_LIBRARYDIR ) file(TO_CMAKE_PATH ${BOOST_LIBRARYDIR} BOOST_LIBRARYDIR) SET(_boost_LIBRARIES_SEARCH_DIRS ${BOOST_LIBRARYDIR} ${_boost_LIBRARIES_SEARCH_DIRS}) ENDIF( BOOST_LIBRARYDIR ) # Try to find Boost by stepping backwards through the Boost versions # we know about. FOREACH(_boost_VER ${_boost_TEST_VERSIONS}) IF( NOT Boost_INCLUDE_DIR ) # Add in a path suffix, based on the required version, ideally # we could read this from version.hpp, but for that to work we'd # need to know the include dir already if (WIN32 AND NOT CYGWIN) set(_boost_PATH_SUFFIX boost_${_boost_VER}) else (WIN32 AND NOT CYGWIN) set(_boost_PATH_SUFFIX boost-${_boost_VER}) endif (WIN32 AND NOT CYGWIN) IF(_boost_PATH_SUFFIX MATCHES "[0-9]+\\.[0-9]+\\.[0-9]+") STRING(REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9]+)" "\\1_\\2_\\3" _boost_PATH_SUFFIX ${_boost_PATH_SUFFIX}) ELSEIF(_boost_PATH_SUFFIX MATCHES "[0-9]+\\.[0-9]+") STRING(REGEX REPLACE "([0-9]+)\\.([0-9]+)" "\\1_\\2" _boost_PATH_SUFFIX ${_boost_PATH_SUFFIX}) ENDIF(_boost_PATH_SUFFIX MATCHES "[0-9]+\\.[0-9]+\\.[0-9]+") FIND_PATH(Boost_INCLUDE_DIR NAMES boost/config.hpp HINTS ${_boost_INCLUDE_SEARCH_DIRS} PATH_SUFFIXES ${_boost_PATH_SUFFIX} ) ENDIF( NOT Boost_INCLUDE_DIR ) ENDFOREACH(_boost_VER) IF(Boost_INCLUDE_DIR) # Extract Boost_VERSION and Boost_LIB_VERSION from version.hpp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -