2017-09-29 3 views
0

J'ai compilé Boost de la source avec Visual Studio 2017, et je suis en utilisant CMake 3.9.3 pour trouver avec la commande suivante dans mon CMakeLists.txt:Comment trouver la bibliothèque de systèmes de fichiers Boost compilée avec VS 2017 avec CMake?

find_package(Boost REQUIRED COMPONENTS filesystem) 

J'invoque CMake comme ceci:

cmake -G "Visual Studio 15 2017" .. 
    -DBOOST_ROOT="C:\Users\emlai\src\libs\boost_1_65_0" 
    -DBOOST_LIBRARYDIR="C:\Users\emlai\src\libs\boost_1_65_0\lib64-msvc-15.0" 

Je reçois le message suivant:

CMake Error at C:/Program Files/CMake/share/cmake-3.9/Modules/FindBoost.cmake:1902 (message): 
    Unable to find the requested Boost libraries. 

    Boost version: 1.65.0 

    Boost include path: C:/Users/emlai/src/libs/boost_1_65_0 

    Could not find the following Boost libraries: 

      boost_filesystem 

    Some (but not all) of the required Boost libraries were found. You may 
    need to install these additional Boost libraries. Alternatively, set 
    BOOST_LIBRARYDIR to the directory containing Boost libraries or BOOST_ROOT 
    to the location of Boost. 
Call Stack (most recent call first): 
    CMakeLists.txt:31 (find_package) 


CMake Error at C:/Program Files/CMake/share/cmake-3.9/Modules/FindPackageHandleStandardArgs.cmake:137 (message): 
    Could NOT find SDL2 (missing: SDL2_LIBRARY SDL2_INCLUDE_DIR) 
Call Stack (most recent call first): 
    C:/Program Files/CMake/share/cmake-3.9/Modules/FindPackageHandleStandardArgs.cmake:377 (_FPHSA_FAILURE_MESSAGE) 
    build/cmake-modules/FindSDL2.cmake:173 (FIND_PACKAGE_HANDLE_STANDARD_ARGS) 
    CMakeLists.txt:42 (find_package) 


-- Configuring incomplete, errors occurred! 
See also "C:/Users/emlai/src/zenith/build/CMakeFiles/CMakeOutput.log". 
See also "C:/Users/emlai/src/zenith/build/CMakeFiles/CMakeError.log". 

la sortie de dir C:\Users\emlai\src\libs\boost_1_65_0\lib64-msvc-15.0 montre que les bibliothèques de systèmes de fichiers sont en place. J'ai essayé toutes les réponses here, mais sans succès. La même chose se produit avec les bibliothèques Boost préchargées téléchargées à partir de here.

Comment puis-je résoudre ce problème?

+0

Les bibliothèques x86 ou x64? L'application recherche-t-elle x86 ou x64? –

+0

@BenVoigt x64, mais ça ne fait rien, ça a marché. J'ai dû spécifier la variable 'Boost_COMPILER' pour CMake. – emlai

Répondre

1

Je devais passer -DBoost_COMPILER="-vc141" à CMake pour le faire fonctionner (-vc141 étant la même chaîne que dans les noms de fichiers de bibliothèque Boost).