2017-02-05 2 views
0

J'ai essayé de créer un exemple de projet PCL. here J'ai utilisé cmake pour construire. Mais CMake donne une erreur comme ci-dessousImpossible de trouver Boost

Could NOT find Boost 
CMake Error at C:/Program Files/PCL 1.5.1/cmake/PCLConfig.cmake:38 (message): 
    common is required but boost was not found 
Call Stack (most recent call first): 
    C:/Program Files/PCL 1.5.1/cmake/PCLConfig.cmake:346 (pcl_report_not_found) 
    C:/Program Files/PCL 1.5.1/cmake/PCLConfig.cmake:491 (find_external_library) 
    CMakeLists.txt:5 (find_package) 

Je Boost dans C: \ Program Files \ PCL 1.5.1 \ 3rdParty \ Boost, car CMake n'a pas pu trouver dans un endroit par défaut, je pense qu'il pourrait jeter un Erreur. Pour se débarrasser de cette erreur j'ajouter

SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "C:/Program Files/PCL 1.5.1/3rdParty/Boost/include") 
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "C:/Program Files/PCL 1.5.1/3rdParty/Boost/lib") 

avant la macro(find_boost) Mais aussi jeter la même erreur. S'il vous plaît trouver mon PCLConfig.cmake ci-dessous (je l'ai mentionné l'extrait de code qui se rapporte à stimuler)

SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "C:/Program Files/PCL 1.5.1/3rdParty/Boost/include") 
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "C:/Program Files/PCL 1.5.1/3rdParty/Boost/lib") 
    macro(find_boost) 
     if(PCL_ALL_IN_ONE_INSTALLER) 
     set(BOOST_ROOT "${PCL_ROOT}/3rdParty/Boost") 
     elseif(NOT BOOST_INCLUDEDIR) 
     set(BOOST_INCLUDEDIR "d:/git/SuperBuild/build/CMakeExternal/Install/Boost/include") 
     endif(PCL_ALL_IN_ONE_INSTALLER) 
     # use static Boost in Windows 
     if(WIN32) 
     set(Boost_USE_STATIC_LIBS ON) 
     set(Boost_USE_STATIC ON) 
     endif(WIN32) 
     if(${CMAKE_VERSION} VERSION_LESS 2.8.5) 
     SET(Boost_ADDITIONAL_VERSIONS "1.43" "1.43.0" "1.44" "1.44.0" "1.45" "1.45.0" "1.46.1" "1.46.0" "1.46" "1.47" "1.47.0") 
     else(${CMAKE_VERSION} VERSION_LESS 2.8.5) 
     SET(Boost_ADDITIONAL_VERSIONS "1.47" "1.47.0") 
     endif(${CMAKE_VERSION} VERSION_LESS 2.8.5) 
     # Disable the config mode of find_package(Boost) 
     set(Boost_NO_BOOST_CMAKE ON) 
     find_package(Boost 1.40.0 ${QUIET_} COMPONENTS system filesystem thread date_time iostreams) 
     set(BOOST_FOUND ${Boost_FOUND}) 
     set(BOOST_INCLUDE_DIRS "${Boost_INCLUDE_DIR}") 
     set(BOOST_LIBRARY_DIRS "${Boost_LIBRARY_DIRS}") 
     set(BOOST_LIBRARIES ${Boost_LIBRARIES}) 
     if(WIN32) 
     set(BOOST_DEFINITIONS ${BOOST_DEFINITIONS} -DBOOST_ALL_NO_LIB) 
     endif(WIN32) 
    endmacro(find_boost) 

Toute aide est appréciée à cette question.

Répondre

0

essayer la surélévation vars directement comme suit:

macro(find_boost) 
    if(PCL_ALL_IN_ONE_INSTALLER) 
    set(BOOST_ROOT "${PCL_ROOT}/3rdParty/Boost") 
    elseif(NOT BOOST_INCLUDEDIR) 
     set(BOOST_INCLUDEDIR ""C:/Program Files/PCL 1.5.1/3rdParty/Boost/include") 
     set(BOOST_INCLUDEDIR ""C:/Program Files/PCL 1.5.1/3rdParty/Boost/include") 
     set(Boost_LIBRARY_DIR "C:/Program Files/PCL 1.5.1/3rdParty/Boost/lib") 
    endif(PCL_ALL_IN_ONE_INSTALLER) 
    # use static Boost in Windows 
    if(WIN32) 
    set(Boost_USE_STATIC_LIBS ON) 
    set(Boost_USE_STATIC ON) 
    endif(WIN32) 
    if(${CMAKE_VERSION} VERSION_LESS 2.8.5) 
    SET(Boost_ADDITIONAL_VERSIONS "1.43" "1.43.0" "1.44" "1.44.0" "1.45" "1.45.0" "1.46.1" "1.46.0" "1.46" "1.47" "1.47.0") 
    else(${CMAKE_VERSION} VERSION_LESS 2.8.5) 
    SET(Boost_ADDITIONAL_VERSIONS "1.47" "1.47.0") 
    endif(${CMAKE_VERSION} VERSION_LESS 2.8.5) 
    # Disable the config mode of find_package(Boost) 
    set(Boost_NO_BOOST_CMAKE ON) 
    find_package(Boost 1.40.0 ${QUIET_} COMPONENTS system filesystem thread date_time iostreams) 
    set(BOOST_FOUND ${Boost_FOUND}) 
    set(BOOST_INCLUDE_DIRS "${Boost_INCLUDE_DIR}") 
    set(BOOST_LIBRARY_DIRS "${Boost_LIBRARY_DIRS}") 
    set(BOOST_LIBRARIES ${Boost_LIBRARIES}) 
    if(WIN32) 
    set(BOOST_DEFINITIONS ${BOOST_DEFINITIONS} -DBOOST_ALL_NO_LIB) 
    endif(WIN32) 
endmacro(find_boost) 
0

Utilisez l'outil graphique dans CMake. (Hardcoding chemins fonctionnera directement, mais ce n'est pas ce que vous voulez faire, il va à l'encontre de l'objectif de CMake).

Différentes variables apparaîtront comme BOOST_ROOT, BOOST_DIR et ainsi de suite. Dans l'outil graphique, cliquez sur, puis pointez la variable sur les répertoires Boost. En fonction de la configuration exacte du fichier CMake, vous devrez peut-être jouer avec lui jusqu'à ce qu'il soit satisfait, mais il devrait éventuellement trouver Boost. Vous devez avoir installé Boost correctement, y compris compiler les composants non-jeader, mais je suppose que cela a déjà été vérifié.