BOOST库 --boost_options组件使用

本文介绍了一个使用Boost库中program_options组件的例子,展示了如何通过命令行参数来设置程序配置,包括帮助信息和压缩级别等。

系统环境Ubuntu14.04 LTS g++-4.8

1、示例代码 boost_options.cpp


#include <iostream>
using namespace std;

#include <boost/program_options.hpp>
namespace po = boost::program_options;

int main(int argc, char*argv[])
{
    //int level;
    po::options_description desc("Allowed options");
    desc.add_options()
        ("help", "produce help message")
        //("help,h", "produce help message")
        ("compression", po::value<int>(), "set compression level");
        //("compression", po::value<int>(&level)->default_value(1), "set compression level");

    po::variables_map vm;
    po::store(po::parse_command_line(argc, argv, desc), vm);
    po::notify(vm);

    if(vm.count("help"))
    {
        cout<<desc<<endl;
        return 1;
    }

    if(vm.count("compression"))
    {
        cout<<"compression level was set to "<<vm["compression"].as<int>()<<"."<<endl;
        //cout<<"compression level: "<<level<<endl;
    }
    else
    {
        cout<<"compression level was not set."<<endl;
    }

    return 0;
}

2、说明:BOOST库大多数组件不需要编译链接,直接在自己的源码里包含相应头文件夹即可。但少量库(如chrono、date_time、regex、program_options、thread、python等),必须编译成静态库或者动态库,并在构建时指定链接选项才能使用。

program_options需要指定库文件

$g++ -I/usr/local/inlcude -L/usr/local/lib boost_options.cpp -o boost_options -lboost_program_options

$./boost_options --help

输出以下内容:
Allowed options:
–help produce help message
–compression arg set compression level

$./boost_options --compression 100

输出以下内容:
compression level was set to 100.

### ---[ PCL global CMake cmake_minimum_required(VERSION 2.8 FATAL_ERROR) set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "possible configurations" FORCE) if("${CMAKE_BUILD_TYPE}" STREQUAL "") set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "build type default to RelWithDebInfo, set to Release to improve performance" FORCE) endif("${CMAKE_BUILD_TYPE}" STREQUAL "") project(PCL) string(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWER) set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/Modules/" ${CMAKE_MODULE_PATH}) if(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") add_definitions("-DBOOST_DISABLE_ASSERTS -DEIGEN_NO_DEBUG") endif() if(WIN32) if(NOT DEFINED CMAKE_DEBUG_POSTFIX) set(CMAKE_DEBUG_POSTFIX "_debug") endif() if(NOT DEFINED CMAKE_RELEASE_POSTFIX) set(CMAKE_RELEASE_POSTFIX "_release") endif() endif() SET(CMAKE_CXX_FLAGS_MAINTAINER "-pedantic -Wno-variadic-macros -Wabi -Wextra -Weffc++" CACHE STRING "" FORCE) SET(CMAKE_C_FLAGS_MAINTAINER "-pedantic -Wno-variadic-macros -Wabi -Wextra -Weffc++" CACHE STRING "" FORCE) SET(CMAKE_EXE_LINKER_FLAGS_MAINTAINER "-Wl,--warn-unresolved-symbols,--warn-once" CACHE STRING "" FORCE) SET(CMAKE_SHARED_LINKER_FLAGS_MAINTAINER "-Wl,--warn-unresolved-symbols,--warn-once" CACHE STRING "" FORCE) MARK_AS_ADVANCED( CMAKE_CXX_FLAGS_MAINTAINER CMAKE_C_FLAGS_MAINTAINER CMAKE_EXE_LINKER_FLAGS_MAINTAINER CMAKE_SHARED_LINKER_FLAGS_MAINTAINER ) SET(CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel Maintainer." FORCE) option(PCL_SHARED_LIBS ON) if (ANDROID_NDK) set (PCL_SHARED_LIBS OFF) message ("PCL shared libs on Android must be: ${PCL_SHARED_LIBS}") endif() include(${PCL_SOURCE_DIR}/cmake/pcl_targets.cmake) include(${PCL_SOURCE_DIR}/cmake/pcl_options.cmake) if(CMAKE_COMPILER_IS_GNUCXX) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-unknown-pragmas -fno-strict-aliasing -pthread") if(WIN32) if(PCL_SHARED_LIBS) SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--export-all-symbols -Wl,--enable-auto-import") else(PCL_SHARED_LIBS) add_definitions("-DBOOST_LIB_DIAGNOSTIC -DBOOST_THREAD_USE_LIB") endif(PCL_SHARED_LIBS) endif() endif() if(MSVC) add_definitions ("-DBOOST_ALL_NO_LIB -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -DNOMINMAX") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj /EHsc /fp:fast") if(MSVC90 OR MSVC10) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") endif() endif() include(${PCL_SOURCE_DIR}/cmake/pcl_find_sse.cmake) PCL_CHECK_FOR_SSE() if (__COMPILER_PATHSCALE) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-uninitialized -zerouv -pthread -mp") endif() if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") endif() option(USE_PROJECT_FOLDERS "Use folders to organize PCL projects in an IDE." OFF) mark_as_advanced(USE_PROJECT_FOLDERS) if(USE_PROJECT_FOLDERS) set_property(GLOBAL PROPERTY USE_FOLDERS ON) endif(USE_PROJECT_FOLDERS) include(${PCL_SOURCE_DIR}/cmake/pcl_utils.cmake) set(PCL_VERSION 1.5.1 CACHE STRING "PCL version") DISSECT_VERSION() GET_OS_INFO() SET_INSTALL_DIRS() if(WIN32) set(PCL_RESOURCES_DIR ${PCL_SOURCE_DIR}/resources) set(PCL_POINTCLOUDS_DIR ${PCL_RESOURCES_DIR}/pointclouds) endif(WIN32) set(PCL_OUTPUT_LIB_DIR ${PCL_BINARY_DIR}/${LIB_INSTALL_DIR}) set(PCL_OUTPUT_BIN_DIR ${PCL_BINARY_DIR}/${BIN_INSTALL_DIR}) make_directory(${PCL_OUTPUT_LIB_DIR}) make_directory(${PCL_OUTPUT_BIN_DIR}) if(WIN32) foreach(config ${CMAKE_CONFIGURATION_TYPES}) string(TOUPPER ${config} CONFIG) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CONFIG} "${PCL_OUTPUT_LIB_DIR}") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CONFIG} "${PCL_OUTPUT_BIN_DIR}") set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CONFIG} "${PCL_OUTPUT_BIN_DIR}") endforeach(config) else(WIN32) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PCL_OUTPUT_LIB_DIR}") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PCL_OUTPUT_BIN_DIR}") set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PCL_OUTPUT_LIB_DIR}") endif(WIN32) configure_file("${PCL_SOURCE_DIR}/cmake/uninstall_target.cmake.in" "${PCL_BINARY_DIR}/uninstall_target.cmake" IMMEDIATE @ONLY) add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${PCL_BINARY_DIR}/uninstall_target.cmake") SET(CMAKE_SKIP_BUILD_RPATH FALSE) SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}") SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}" is_system_dir) IF("${is_system_dir}" STREQUAL "-1") SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}") ENDIF("${is_system_dir}" STREQUAL "-1") option(BUILD_OPENNI ON) option(BUILD_TESTS OFF) option(BUILD_all_in_one_installer OFF) option(BUILD_apps ON) option(BUILD_common ON) option(BUILD_examples ON) option(BUILD_features ON) option(BUILD_filters ON) option(BUILD_global_tests OFF) option(BUILD_io ON) option(BUILD_kdtree ON) option(BUILD_keypoints ON) option(BUILD_octree ON) option(BUILD_registration ON) option(BUILD_sample_consensus ON) option(BUILD_search ON) option(BUILD_segmentation ON) option(BUILD_surface ON) option(BUILD_tools ON) option(BUILD_tracking ON) option(BUILD_visualization ON) if(WIN32) if(NOT DEFINED BOOST_ROOT AND DEFINED ENV{BOOST_ROOT}) set(BOOST_ROOT $ENV{BOOST_ROOT} CACHE PATH "BOOST_ROOT") endif() if(NOT DEFINED Boost_INCLUDE_DIR) if(DEFINED BOOST_ROOT AND EXISTS "${BOOST_ROOT}/include") set(Boost_INCLUDE_DIR "${BOOST_ROOT}/include") elseif(DEFINED ENV{BOOST_ROOT} AND EXISTS "$ENV{BOOST_ROOT}/include") set(Boost_INCLUDE_DIR "$ENV{BOOST_ROOT}/include") elseif(EXISTS "E:/PointCloudLibrary/VS2008_V90_X64/3rdparty/Boost1.69/include") set(Boost_INCLUDE_DIR "E:/PointCloudLibrary/VS2008_V90_X64/3rdparty/Boost1.69/include") else() set(Boost_INCLUDE_DIR "") endif() endif() set(Boost_INCLUDE_DIR "${Boost_INCLUDE_DIR}" CACHE PATH "Boost_INCLUDE_DIR" FORCE) mark_as_advanced(CLEAR Boost_INCLUDE_DIR) if(Boost_INCLUDE_DIR AND EXISTS "${Boost_INCLUDE_DIR}") include_directories("${Boost_INCLUDE_DIR}") endif() if(NOT DEFINED Boost_LIBRARY_DIR_RELEASE) if(EXISTS "${BOOST_ROOT}/lib/Release") set(Boost_LIBRARY_DIR_RELEASE "${BOOST_ROOT}/lib/Release") elseif(EXISTS "${BOOST_ROOT}/stage/lib") set(Boost_LIBRARY_DIR_RELEASE "${BOOST_ROOT}/stage/lib") elseif(EXISTS "E:/PointCloudLibrary/VS2008_V90_X64/3rdparty/Boost1.69/lib/Release") set(Boost_LIBRARY_DIR_RELEASE "E:/PointCloudLibrary/VS2008_V90_X64/3rdparty/Boost1.69/lib/Release") elseif(EXISTS "E:/PointCloudLibrary/VS2008_V90_X64/3rdparty/Boost1.69/lib") set(Boost_LIBRARY_DIR_RELEASE "E:/PointCloudLibrary/VS2008_V90_X64/3rdparty/Boost1.69/lib") else() set(Boost_LIBRARY_DIR_RELEASE "") endif() endif() if(NOT DEFINED Boost_LIBRARY_DIR_DEBUG) if(EXISTS "${BOOST_ROOT}/lib/Debug") set(Boost_LIBRARY_DIR_DEBUG "${BOOST_ROOT}/lib/Debug") elseif(EXISTS "${BOOST_ROOT}/stage/lib") set(Boost_LIBRARY_DIR_DEBUG "${BOOST_ROOT}/stage/lib") elseif(EXISTS "E:/PointCloudLibrary/VS2008_V90_X64/3rdparty/Boost1.69/lib/Debug") set(Boost_LIBRARY_DIR_DEBUG "E:/PointCloudLibrary/VS2008_V90_X64/3rdparty/Boost1.69/lib/Debug") elseif(EXISTS "E:/PointCloudLibrary/VS2008_V90_X64/3rdparty/Boost1.69/lib") set(Boost_LIBRARY_DIR_DEBUG "E:/PointCloudLibrary/VS2008_V90_X64/3rdparty/Boost1.69/lib") else() set(Boost_LIBRARY_DIR_DEBUG "") endif() endif() set(Boost_LIBRARY_DIR_RELEASE "${Boost_LIBRARY_DIR_RELEASE}" CACHE PATH "Boost_LIBRARY_DIR_RELEASE" FORCE) set(Boost_LIBRARY_DIR_DEBUG "${Boost_LIBRARY_DIR_DEBUG}" CACHE PATH "Boost_LIBRARY_DIR_DEBUG" FORCE) mark_as_advanced(CLEAR Boost_LIBRARY_DIR_RELEASE Boost_LIBRARY_DIR_DEBUG) if(Boost_LIBRARY_DIR_RELEASE AND EXISTS "${Boost_LIBRARY_DIR_RELEASE}") link_directories("${Boost_LIBRARY_DIR_RELEASE}") endif() if(Boost_LIBRARY_DIR_DEBUG AND EXISTS "${Boost_LIBRARY_DIR_DEBUG}") link_directories("${Boost_LIBRARY_DIR_DEBUG}") endif() find_library(Boost_SYSTEM_LIBRARY_RELEASE NAMES boost_system boost_system-mt boost_system-vc90-mt boost_system-vc90-mt-1_69 libboost_system-vc90-mt-1_69 HINTS "${Boost_LIBRARY_DIR_RELEASE}" "${Boost_LIBRARY_DIR_DEBUG}") find_library(Boost_SYSTEM_LIBRARY_DEBUG NAMES boost_system-gd boost_system-mt-gd boost_system-vc90-mt-gd boost_system-vc90-mt-gd-1_69 libboost_system-vc90-mt-gd-1_69 HINTS "${Boost_LIBRARY_DIR_DEBUG}" "${Boost_LIBRARY_DIR_RELEASE}") find_library(Boost_FILESYSTEM_LIBRARY_RELEASE NAMES boost_filesystem boost_filesystem-mt boost_filesystem-vc90-mt boost_filesystem-vc90-mt-1_69 libboost_filesystem-vc90-mt-1_69 HINTS "${Boost_LIBRARY_DIR_RELEASE}" "${Boost_LIBRARY_DIR_DEBUG}") find_library(Boost_FILESYSTEM_LIBRARY_DEBUG NAMES boost_filesystem-gd boost_filesystem-mt-gd boost_filesystem-vc90-mt-gd boost_filesystem-vc90-mt-gd-1_69 libboost_filesystem-vc90-mt-gd-1_69 HINTS "${Boost_LIBRARY_DIR_DEBUG}" "${Boost_LIBRARY_DIR_RELEASE}") find_library(Boost_THREAD_LIBRARY_RELEASE NAMES boost_thread boost_thread-mt boost_thread-vc90-mt boost_thread-vc90-mt-1_69 libboost_thread-vc90-mt-1_69 HINTS "${Boost_LIBRARY_DIR_RELEASE}" "${Boost_LIBRARY_DIR_DEBUG}") find_library(Boost_THREAD_LIBRARY_DEBUG NAMES boost_thread-gd boost_thread-mt-gd boost_thread-vc90-mt-gd boost_thread-vc90-mt-gd-1_69 libboost_thread-vc90-mt-gd-1_69 HINTS "${Boost_LIBRARY_DIR_DEBUG}" "${Boost_LIBRARY_DIR_RELEASE}") find_library(Boost_DATE_TIME_LIBRARY_RELEASE NAMES boost_date_time boost_date_time-mt boost_date_time-vc90-mt boost_date_time-vc90-mt-1_69 libboost_date_time-vc90-mt-1_69 HINTS "${Boost_LIBRARY_DIR_RELEASE}" "${Boost_LIBRARY_DIR_DEBUG}") find_library(Boost_DATE_TIME_LIBRARY_DEBUG NAMES boost_date_time-gd boost_date_time-mt-gd boost_date_time-vc90-mt-gd boost_date_time-vc90-mt-gd-1_69 libboost_date_time-vc90-mt-gd-1_69 HINTS "${Boost_LIBRARY_DIR_DEBUG}" "${Boost_LIBRARY_DIR_RELEASE}") find_library(Boost_IOSTREAMS_LIBRARY_RELEASE NAMES boost_iostreams boost_iostreams-mt boost_iostreams-vc90-mt boost_iostreams-vc90-mt-1_69 libboost_iostreams-vc90-mt-1_69 HINTS "${Boost_LIBRARY_DIR_RELEASE}" "${Boost_LIBRARY_DIR_DEBUG}") find_library(Boost_IOSTREAMS_LIBRARY_DEBUG NAMES boost_iostreams-gd boost_iostreams-mt-gd boost_iostreams-vc90-mt-gd boost_iostreams-vc90-mt-gd-1_69 libboost_iostreams-vc90-mt-gd-1_69 HINTS "${Boost_LIBRARY_DIR_DEBUG}" "${Boost_LIBRARY_DIR_RELEASE}") find_library(Boost_SERIALIZATION_LIBRARY_RELEASE NAMES boost_serialization boost_serialization-mt boost_serialization-vc90-mt boost_serialization-vc90-mt-1_69 libboost_serialization-vc90-mt-1_69 HINTS "${Boost_LIBRARY_DIR_RELEASE}" "${Boost_LIBRARY_DIR_DEBUG}") find_library(Boost_SERIALIZATION_LIBRARY_DEBUG NAMES boost_serialization-gd boost_serialization-mt-gd boost_serialization-vc90-mt-gd boost_serialization-vc90-mt-gd-1_69 libboost_serialization-vc90-mt-gd-1_69 HINTS "${Boost_LIBRARY_DIR_DEBUG}" "${Boost_LIBRARY_DIR_RELEASE}") find_library(Boost_MPl_LIBRARY_RELEASE NAMES boost_mpi boost_mpi-mt boost_mpi-vc90-mt HINTS "${Boost_LIBRARY_DIR_RELEASE}" "${Boost_LIBRARY_DIR_DEBUG}") find_library(Boost_MPl_LIBRARY_DEBUG NAMES boost_mpi-gd boost_mpi-mt-gd boost_mpi-vc90-mt-gd HINTS "${Boost_LIBRARY_DIR_DEBUG}" "${Boost_LIBRARY_DIR_RELEASE}") set(Boost_SYSTEM_LIBRARY_RELEASE "${Boost_SYSTEM_LIBRARY_RELEASE}" CACHE FILEPATH "Boost_SYSTEM_LIBRARY_RELEASE") set(Boost_SYSTEM_LIBRARY_DEBUG "${Boost_SYSTEM_LIBRARY_DEBUG}" CACHE FILEPATH "Boost_SYSTEM_LIBRARY_DEBUG") set(Boost_FILESYSTEM_LIBRARY_RELEASE "${Boost_FILESYSTEM_LIBRARY_RELEASE}" CACHE FILEPATH "Boost_FILESYSTEM_LIBRARY_RELEASE") set(Boost_FILESYSTEM_LIBRARY_DEBUG "${Boost_FILESYSTEM_LIBRARY_DEBUG}" CACHE FILEPATH "Boost_FILESYSTEM_LIBRARY_DEBUG") set(Boost_THREAD_LIBRARY_RELEASE "${Boost_THREAD_LIBRARY_RELEASE}" CACHE FILEPATH "Boost_THREAD_LIBRARY_RELEASE") set(Boost_THREAD_LIBRARY_DEBUG "${Boost_THREAD_LIBRARY_DEBUG}" CACHE FILEPATH "Boost_THREAD_LIBRARY_DEBUG") set(Boost_DATE_TIME_LIBRARY_RELEASE "${Boost_DATE_TIME_LIBRARY_RELEASE}" CACHE FILEPATH "Boost_DATE_TIME_LIBRARY_RELEASE") set(Boost_DATE_TIME_LIBRARY_DEBUG "${Boost_DATE_TIME_LIBRARY_DEBUG}" CACHE FILEPATH "Boost_DATE_TIME_LIBRARY_DEBUG") set(Boost_IOSTREAMS_LIBRARY_RELEASE "${Boost_IOSTREAMS_LIBRARY_RELEASE}" CACHE FILEPATH "Boost_IOSTREAMS_LIBRARY_RELEASE") set(Boost_IOSTREAMS_LIBRARY_DEBUG "${Boost_IOSTREAMS_LIBRARY_DEBUG}" CACHE FILEPATH "Boost_IOSTREAMS_LIBRARY_DEBUG") set(Boost_SERIALIZATION_LIBRARY_RELEASE "${Boost_SERIALIZATION_LIBRARY_RELEASE}" CACHE FILEPATH "Boost_SERIALIZATION_LIBRARY_RELEASE") set(Boost_SERIALIZATION_LIBRARY_DEBUG "${Boost_SERIALIZATION_LIBRARY_DEBUG}" CACHE FILEPATH "Boost_SERIALIZATION_LIBRARY_DEBUG") mark_as_advanced(CLEAR PCL_SHARED_LIBS Boost_INCLUDE_DIR Boost_LIBRARY_DIR_RELEASE Boost_LIBRARY_DIR_DEBUG Boost_SYSTEM_LIBRARY_RELEASE Boost_SYSTEM_LIBRARY_DEBUG Boost_FILESYSTEM_LIBRARY_RELEASE Boost_FILESYSTEM_LIBRARY_DEBUG Boost_THREAD_LIBRARY_RELEASE Boost_THREAD_LIBRARY_DEBUG Boost_DATE_TIME_LIBRARY_RELEASE Boost_DATE_TIME_LIBRARY_DEBUG Boost_IOSTREAMS_LIBRARY_RELEASE Boost_IOSTREAMS_LIBRARY_DEBUG Boost_SERIALIZATION_LIBRARY_RELEASE Boost_SERIALIZATION_LIBRARY_DEBUG ) endif() if(WIN32) if(NOT DEFINED EIGEN3_ROOT AND DEFINED ENV{EIGEN3_ROOT}) set(EIGEN3_ROOT $ENV{EIGEN3_ROOT} CACHE PATH "EIGEN3_ROOT") endif() if(NOT DEFINED EIGEN_INCLUDE_DIRS) if(EXISTS "E:/PointCloudLibrary/VS2008_V90_X64/3rdparty/Eigen3/Release/include/Eigen/Core") set(EIGEN_INCLUDE_DIRS "E:/PointCloudLibrary/VS2008_V90_X64/3rdparty/Eigen3/Release/include" CACHE PATH "EIGEN_INCLUDE_DIRS") elseif(EXISTS "E:/PointCloudLibrary/VS2008_V90_X64/3rdparty/Eigen3/include/Eigen/Core") set(EIGEN_INCLUDE_DIRS "E:/PointCloudLibrary/VS2008_V90_X64/3rdparty/Eigen3/include" CACHE PATH "EIGEN_INCLUDE_DIRS") endif() endif() if(EIGEN_INCLUDE_DIRS) include_directories(${EIGEN_INCLUDE_DIRS}) endif() endif() if(WIN32) if(NOT DEFINED FLANN_ROOT AND DEFINED ENV{FLANN_ROOT}) set(FLANN_ROOT $ENV{FLANN_ROOT} CACHE PATH "FLANN_ROOT") endif() if(NOT DEFINED FLANN_INCLUDE_DIR) if(DEFINED FLANN_ROOT AND EXISTS "${FLANN_ROOT}/Release/include") set(FLANN_INCLUDE_DIR "${FLANN_ROOT}/Release/include") elseif(DEFINED FLANN_ROOT AND EXISTS "${FLANN_ROOT}/include") set(FLANN_INCLUDE_DIR "${FLANN_ROOT}/include") elseif(EXISTS "E:/PointCloudLibrary/VS2008_V90_X64/3rdparty/FLANN/Release/include") set(FLANN_INCLUDE_DIR "E:/PointCloudLibrary/VS2008_V90_X64/3rdparty/FLANN/Release/include") elseif(EXISTS "E:/PointCloudLibrary/VS2008_V90_X64/3rdparty/FLANN/include") set(FLANN_INCLUDE_DIR "E:/PointCloudLibrary/VS2008_V90_X64/3rdparty/FLANN/include") else() set(FLANN_INCLUDE_DIR "") endif() endif() set(FLANN_INCLUDE_DIR "${FLANN_INCLUDE_DIR}" CACHE PATH "FLANN_INCLUDE_DIR" FORCE) mark_as_advanced(CLEAR FLANN_INCLUDE_DIR) if(FLANN_INCLUDE_DIR AND EXISTS "${FLANN_INCLUDE_DIR}") include_directories("${FLANN_INCLUDE_DIR}") endif() find_library(FLANN_LIBRARY_RELEASE NAMES flann_cpp_s flann_cpp flann HINTS "${FLANN_ROOT}/Release/lib" "${FLANN_ROOT}/lib") find_library(FLANN_LIBRARY_DEBUG NAMES flann_cpp_s-gd flann_cpp-gd flann-gd HINTS "${FLANN_ROOT}/Debug/lib" "${FLANN_ROOT}/lib") if(FLANN_LIBRARY_RELEASE) set(FLANN_LIBRARY "${FLANN_LIBRARY_RELEASE}" CACHE FILEPATH "FLANN_LIBRARY") endif() if(FLANN_LIBRARY_DEBUG) set(FLANN_LIBRARY_DEBUG "${FLANN_LIBRARY_DEBUG}" CACHE FILEPATH "FLANN_LIBRARY_DEBUG") endif() endif() if(WIN32) if(NOT DEFINED QHULL_ROOT AND DEFINED ENV{QHULL_ROOT}) set(QHULL_ROOT $ENV{QHULL_ROOT} CACHE PATH "QHULL_ROOT") endif() if(NOT DEFINED QHULL_INCLUDE_DIR) if(DEFINED QHULL_ROOT AND EXISTS "${QHULL_ROOT}/Release/include/qhull/qhull.h") set(QHULL_INCLUDE_DIR "${QHULL_ROOT}/Release/include") elseif(DEFINED QHULL_ROOT AND EXISTS "${QHULL_ROOT}/Release/include/libqhull/qhull.h") set(QHULL_INCLUDE_DIR "${QHULL_ROOT}/Release/include") elseif(DEFINED QHULL_ROOT AND EXISTS "${QHULL_ROOT}/include/qhull/qhull.h") set(QHULL_INCLUDE_DIR "${QHULL_ROOT}/include") elseif(DEFINED QHULL_ROOT AND EXISTS "${QHULL_ROOT}/include/libqhull/qhull.h") set(QHULL_INCLUDE_DIR "${QHULL_ROOT}/include") elseif(EXISTS "E:/PointCloudLibrary/VS2008_V90_X64/3rdparty/qhull-v7.2.0/Release/include/qhull/qhull.h" OR EXISTS "E:/PointCloudLibrary/VS2008_V90_X64/3rdparty/qhull-v7.2.0/Release/include/libqhull/qhull.h") set(QHULL_INCLUDE_DIR "E:/PointCloudLibrary/VS2008_V90_X64/3rdparty/qhull-v7.2.0/Release/include") elseif(EXISTS "E:/PointCloudLibrary/VS2008_V90_X64/3rdparty/qhull-v7.2.0/include/qhull/qhull.h" OR EXISTS "E:/PointCloudLibrary/VS2008_V90_X64/3rdparty/qhull-v7.2.0/include/libqhull/qhull.h") set(QHULL_INCLUDE_DIR "E:/PointCloudLibrary/VS2008_V90_X64/3rdparty/qhull-v7.2.0/include") else() set(QHULL_INCLUDE_DIR "") endif() endif() set(QHULL_INCLUDE_DIR "${QHULL_INCLUDE_DIR}" CACHE PATH "QHULL_INCLUDE_DIR" FORCE) mark_as_advanced(CLEAR QHULL_INCLUDE_DIR) if(QHULL_INCLUDE_DIR AND EXISTS "${QHULL_INCLUDE_DIR}") include_directories("${QHULL_INCLUDE_DIR}") endif() find_library(QHULL_LIBRARY_RELEASE NAMES qhullstatic qhull HINTS "${QHULL_ROOT}/Release/lib" "${QHULL_ROOT}/lib") find_library(QHULL_LIBRARY_DEBUG NAMES qhullstatic_d qhull_d HINTS "${QHULL_ROOT}/Debug/lib" "${QHULL_ROOT}/lib") if(QHULL_LIBRARY_RELEASE) set(QHULL_LIBRARY "${QHULL_LIBRARY_RELEASE}" CACHE FILEPATH "QHULL_LIBRARY") endif() if(QHULL_LIBRARY_DEBUG) set(QHULL_LIBRARY_DEBUG "${QHULL_LIBRARY_DEBUG}" CACHE FILEPATH "QHULL_LIBRARY_DEBUG") endif() endif() if(WIN32) if(NOT DEFINED VTK_DIR AND DEFINED ENV{VTK_DIR}) set(VTK_DIR $ENV{VTK_DIR} CACHE PATH "VTK_DIR") endif() if(NOT DEFINED VTK_DIR AND DEFINED ENV{VTK_BASE_DIR}) if(EXISTS "$ENV{VTK_BASE_DIR}/Release/lib/vtk-5.8") set(VTK_DIR "$ENV{VTK_BASE_DIR}/Release/lib/vtk-5.8" CACHE PATH "VTK_DIR") elseif(EXISTS "$ENV{VTK_BASE_DIR}/Debug/lib/vtk-5.8") set(VTK_DIR "$ENV{VTK_BASE_DIR}/Debug/lib/vtk-5.8" CACHE PATH "VTK_DIR") endif() endif() if(DEFINED ENV{QTDIR}) set(CMAKE_PREFIX_PATH "$ENV{QTDIR}" "$ENV{QTDIR}/lib/cmake" ${CMAKE_PREFIX_PATH}) set(QT_PLUGINS_DIR "$ENV{QTDIR}/plugins" CACHE PATH "QT_PLUGINS_DIR") set(QT_DOC_DIR "$ENV{QTDIR}/doc" CACHE PATH "QT_DOC_DIR") set(QT_IMPORTS_DIR "$ENV{QTDIR}/imports" CACHE PATH "QT_IMPORTS_DIR") set(QT_MKSPECS_DIR "$ENV{QTDIR}/mkspecs" CACHE PATH "QT_MKSPECS_DIR") find_program(QT_MOC_EXECUTABLE NAMES moc PATHS "$ENV{QTDIR}/bin") find_program(QT_LRELEASE_EXECUTABLE NAMES lrelease PATHS "$ENV{QTDIR}/bin") find_program(QT_LUPDATE_EXECUTABLE NAMES lupdate PATHS "$ENV{QTDIR}/bin") find_program(QT_DESIGNER_EXECUTABLE NAMES designer PATHS "$ENV{QTDIR}/bin") find_program(QT_DBUSXML2CPP_EXECUTABLE NAMES qdbusxml2cpp PATHS "$ENV{QTDIR}/bin") find_program(QT_DBUSCPP2XML_EXECUTABLE NAMES qdbuscpp2xml PATHS "$ENV{QTDIR}/bin") find_library(QT_QAXCONTAINER_LIBRARY_RELEASE NAMES QAxContainer PATHS "$ENV{QTDIR}/lib") find_library(QT_QAXCONTAINER_LIBRARY_DEBUG NAMES QAxContainerd PATHS "$ENV{QTDIR}/lib") if(QT_QAXCONTAINER_LIBRARY_RELEASE) set(QT_QAxCONTAINER_LIBRARY "${QT_QAXCONTAINER_LIBRARY_RELEASE}" CACHE FILEPATH "QT_QAxCONTAINER_LIBRARY") endif() if(QT_QAXCONTAINER_LIBRARY_DEBUG) set(QT_QAXCONTAINER_LIBRARY_DEBUG "${QT_QAXCONTAINER_LIBRARY_DEBUG}" CACHE FILEPATH "QT_QAxCONTAINER_LIBRARY_DEBUG") endif() find_library(QT_PHONON_LIBRARY_RELEASE NAMES phonon phonon4 PATHS "$ENV{QTDIR}/lib") find_library(QT_PHONON_LIBRARY_DEBUG NAMES phonond phonon4d PATHS "$ENV{QTDIR}/lib") if(QT_PHONON_LIBRARY_RELEASE) set(QT_PHONON_LIBRARY "${QT_PHONON_LIBRARY_RELEASE}" CACHE FILEPATH "QT_PHONON_LIBRARY") endif() if(QT_PHONON_LIBRARY_DEBUG) set(QT_PHONON_LIBRARY_DEBUG "${QT_PHONON_LIBRARY_DEBUG}" CACHE FILEPATH "QT_PHONON_LIBRARY_DEBUG") endif() find_library(QT_PHONONWIDGETS_LIBRARY_RELEASE NAMES phononwidgets PATHS "$ENV{QTDIR}/lib") find_library(QT_PHONONWIDGETS_LIBRARY_DEBUG NAMES phononwidgetsd PATHS "$ENV{QTDIR}/lib") if(QT_PHONONWIDGETS_LIBRARY_RELEASE) set(QT_PHONONwWIDGETS_LIBRARY "${QT_PHONONWIDGETS_LIBRARY_RELEASE}" CACHE FILEPATH "QT_PHONONwWIDGETS_LIBRARY") set(QT_PHONONWIDGETS_LIBRARY_RELEASE "${QT_PHONONWIDGETS_LIBRARY_RELEASE}" CACHE FILEPATH "QT_PHONONWIDGETS_LIBRARY_RELEASE") endif() if(QT_PHONONWIDGETS_LIBRARY_DEBUG) set(QT_PHONONWIDGETS_LIBRARY_DEBUG "${QT_PHONONWIDGETS_LIBRARY_DEBUG}" CACHE FILEPATH "QT_PHONONWIDGETS_LIBRARY_DEBUG") endif() set(QT_PHONON_INCLUDE_DIR "$ENV{QTDIR}/include/phonon" CACHE PATH "QT_PHONON_INCLUDE_DIR") endif() endif() FIND_PACKAGE(OpenMP) if(OPENMP_FOUND) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") endif() include(${PCL_SOURCE_DIR}/cmake/pcl_find_boost.cmake) find_package(Eigen REQUIRED) include_directories(SYSTEM ${EIGEN_INCLUDE_DIRS}) add_definitions(-DEIGEN_USE_NEW_STDVECTOR -DEIGEN_YES_I_KNOW_SPARSE_MODULE_IS_NOT_STABLE_YET) find_package(Flann REQUIRED) include_directories(SYSTEM ${FLANN_INCLUDE_DIRS}) find_package(OpenNI) find_package(Qhull) include(${PCL_SOURCE_DIR}/cmake/pcl_find_ros.cmake) find_package(Qt4) if (QT4_FOUND) include(${QT_USE_FILE}) endif (QT4_FOUND) find_package(VTK) if(VTK_FOUND) set(VTK_FOUND TRUE) find_package (QVTK) message(STATUS "VTK found (include: ${VTK_INCLUDE_DIRS}, lib: ${VTK_LIBRARY_DIRS})") link_directories(${VTK_LIBRARY_DIRS}) set(HAVE_VTK ON) endif(VTK_FOUND) find_package(MPI) if(MPI_CXX_FOUND) include_directories(SYSTEM ${MPI_INCLUDE_PATH}) endif(MPI_CXX_FOUND) find_package(Doxygen) if(DOXYGEN_FOUND) find_package(HTMLHelp) endif(DOXYGEN_FOUND) set(pcl_config_h_in "${CMAKE_CURRENT_SOURCE_DIR}/pcl_config.h.in") set(pcl_config_h "${CMAKE_CURRENT_BINARY_DIR}/include/pcl/pcl_config.h") configure_file(${pcl_config_h_in} ${pcl_config_h}) PCL_ADD_INCLUDES(common "" ${pcl_config_h}) include_directories(${CMAKE_CURRENT_BINARY_DIR}/include) include(${PCL_SOURCE_DIR}/cmake/pcl_tests.cmake) include(${PCL_SOURCE_DIR}/cmake/pcl_targets.cmake) collect_subproject_directory_names(${PCL_SOURCE_DIR} "CMakeLists.txt" PCL_MODULES_NAMES PCL_MODULES_DIRS doc) set(PCL_MODULES_NAMES_UNSORTED ${PCL_MODULES_NAMES}) topological_sort(PCL_MODULES_NAMES PCL_ _DEPENDS) message ("Unsorted modules: ${PCL_MODULES_NAMES_UNSORTED}") message ("Modules: ${PCL_MODULES_NAMES}") sort_relative(PCL_MODULES_NAMES_UNSORTED PCL_MODULES_NAMES PCL_MODULES_DIRS) foreach(subdir ${PCL_MODULES_DIRS}) add_subdirectory(${PCL_SOURCE_DIR}/${subdir}) endforeach(subdir) add_subdirectory(doc) include(${PCL_SOURCE_DIR}/cmake/pcl_pclconfig.cmake) include(${PCL_SOURCE_DIR}/cmake/pcl_all_in_one_installer.cmake) include(${PCL_SOURCE_DIR}/cmake/pcl_cpack.cmake) if(CPACK_GENERATOR) message(STATUS "Found CPack generators: ${CPACK_GENERATOR}") PCL_MAKE_CPACK_INPUT() set(CPACK_PROJECT_CONFIG_FILE "${PCL_CPACK_CFG_FILE}") include(CPack) endif(CPACK_GENERATOR) include(${PCL_SOURCE_DIR}/cmake/dep_graph.cmake) MAKE_DEP_GRAPH() PCL_WRITE_STATUS_REPORT() PCL_RESET_MAPS() 现在 Boost_LIBRARY_DIR_DEBUG Boost_LIBRARY_DIR_RELEASE这两个没有显示出来能否帮我修改一下是实现Boost_LIBRARY_DIR_DEBUG Boost_LIBRARY_DIR_RELEASE这两个显示出来
最新发布
12-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IvanLJF

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值