我有一个非常简单的CMake文件,它在linux上工作得很好,但是在windows上,它说它找不到boost (尽管它似乎找到了它,就像它说的“找到了合适的版本”)。下面是初始构建文件:
cmake_minimum_required(VERSION 3.16.3)
project(filecompare)
set(CMAKE_CXX_STANDARD 20)
find_package(Boost 1.73.0 COMPONENTS program_options)
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
add_executable(filecompare filecompare.cpp)
target_link_libraries(filecompare ${Boost_LIBRARIES})
endif()CMake输出:
-- Could NOT find Boost (missing: Boost_INCLUDE_DIR program_options) (Required is at least version "1.73.0")
-- Configuring done
-- Generating done
-- Build files have been written to: C:/repos/filecompare/cmake-build-debug因此,它似乎无法单独找到库,因此我在find_package上添加了以下行:
SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "C:/local/boost_1_73_0")
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "C:/local/boost_1_73_0/lib64-msvc-14.2")现在它似乎找到了库,但没有找到,这是输出:
-- Could NOT find Boost (missing: program_options) (found suitable version "1.73.0", minimum required is "1.73.0")
-- Configuring done
-- Generating done
-- Build files have been written to: C:/repos/filecompare/cmake-build-debug我试过设置这样的东西:
set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME OFF)
SET(BOOST_ROOT "C:/local/boost_1_73_0/boost")但这也没什么用。那我在这里做错什么了?我在CLion上使用clang和VisualStudio 2019
发布于 2020-12-19 07:50:36
在我看来,你有两个不同的问题:
CMake不知道在哪里可以找到boost.clang.构建boost库二进制文件
第一个问题很容易解决,你几乎把它做对了。要使CMake找到需要设置的boost:BOOST_ROOT和BOOST_LIBRARYDIR,CMake将从这些变量生成CMAKE_INCLUDE_PATH和CMAKE_LIBRARY_PATH。我通常将它们设置为环境变量;在您的情况下,它们应该是:
BOOST_ROOT C:/local/boost_1_73_0
BOOST_LIBRARYDIR C:/local/boost_1_73_0/lib64-msvc-14.2假设lib64-msvc-14.2是用clang构建boost库的地方?!
注意:库二进制文件(如果构建为共享的话包括dll)应该位于名为lib64-msvc-14.2 lib的子目录中。
第二个问题是,您需要为boost构建program_options库,特别是clang库。
我只试过用clang构建一次clang,然后只能构建32位二进制文件,参见Building Boost with Clang “Failed to build Boost.build engine”。不过,那是18个月前的事了,从那以后情况可能有所改善。
请注意,我经常使用在Windows上构建的boost库( mingw (gcc) ),并且有CMake找不到boost的问题--参见:cmake FindBoost not finding Boost libraries when building with MinGW on Windows --如果您对clang有类似的问题,我不会感到惊讶。许多C++库和工具(包括CMake)假设,如果您在Windows上,那么您使用的是Visual Studio.
我建议先使用Visual构建,因为您已经拥有Visual 19 boost库二进制文件。我还建议将CMAKE_CXX_STANDARD设置为17,因为目前您正在将所有内容推向极限!:)
https://stackoverflow.com/questions/65357626
复制相似问题