2

我有一个非常简单的 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")

但这也无济于事。那么我在这里做错了什么?我在带有 VisualStudio 2019 的 CLion 上使用 clang-cl

4

1 回答 1

2

在我看来,您有两个不同的问题:

  1. CMake不知道在哪里找boost
  2. 您还没有boostclang.

第一个问题很容易解决,而且您几乎做对了。为了CMake找到boost你需要设置:BOOST_ROOTBOOST_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是您构建boost库的地方clang?!注意:库二进制文件(包括 dll,如果构建为共享)应该位于named
的子目录中。lib64-msvc-14.2lib

boost第二个问题是您需要program_optionsclang.

我只尝试boost使用clang一次构建,然后我只能构建 32 位二进制文​​件,请参阅Building Boost with Clang “Failed to build Boost.build engine”</a>。然而,那是 18 个月前的事了,从那以后情况可能有所改善。

请注意,我经常在 Windows 上使用使用( )boost构建的库,并且遇到找不到的问题请参阅:mingwgccCMakeboostcmake FindBoost 在 Windows 上使用 MinGW 构建时找不到 Boost 库如果您对clang. 许多C++库和工具(包括CMake)假设如果您在 Windows 上,那么您正在使用Visual Studio...

我建议首先使用 Visual Studio 构建,因为您已经拥有 Visual Studio 19boost库二进制文件。我还建议设置CMAKE_CXX_STANDARD为 17,因为您目前正在将所有内容推向极限!:)

于 2020-12-19T07:50:36.747 回答