首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >链接Boost 1.79 lib的问题,它是用MinGW GCC构建的,在Windows上用CMake构建

链接Boost 1.79 lib的问题,它是用MinGW GCC构建的,在Windows上用CMake构建
EN

Stack Overflow用户
提问于 2022-08-15 14:31:03
回答 1查看 114关注 0票数 0

我使用Boost 1.79和Windows 10,为了构建Boost库,我使用了TDM MinGW。在尝试用CMake构建我的测试程序之后,我得到了下一个错误:

代码语言:javascript
复制
CMake Error at D:/CMake/share/cmake-3.24/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find Boost (missing: log thread) (found suitable version
  "1.79.0", minimum required is "1.79")
Call Stack (most recent call first):
  D:/CMake/share/cmake-3.24/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
  D:/CMake/share/cmake-3.24/Modules/FindBoost.cmake:2376 (find_package_handle_standard_args)
  CMakeLists.txt:16 (find_package)

我的CMakeLists.txt

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.24)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
#set(CMAKE_C_COMPILER "D:/TDM-MinGW/bin/gcc.exe")
#set(CMAKE_CXX_COMPILER "D:/TDM-MinGW/bin/g++.exe")
set(Boost_DEBUG=ON)
set(Boost_USE_STATIC_LIBS       ON)
set(Boost_USE_MULTITHREADED      ON)
set(Boost_USE_STATIC_RUNTIME    OFF)

project (testlib)

find_package(Boost 1.79 COMPONENTS log thread REQUIRED)

IF(Boost_FOUND)
    INCLUDE_DIRECTORIES(SYSTEM ${Boost_INCLUDE_DIR})
    LINK_DIRECTORIES(${Boost_LIBRARY_DIR})
    MESSAGE("Boost information")
    MESSAGE("Boost_INCLUDE_DIRS: ${Boost_INCLUDE_DIRS}")
    MESSAGE("Boost_LIBRARY_DIRS: ${Boost_LIBRARY_DIRS}")
    MESSAGE("Boost_Version: ${Boost_VERSION}")
    MESSAGE("Boost Libraries: ${Boost_LIBRARIES}")
ENDIF()

include_directories(${Boost_INCLUDE_DIR})
link_directories(${Boost_LIBRARY_DIR})
add_executable(testlib src/main.cpp)

target_link_libraries(testlib PUBLIC  ${Boost_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})

Boost库是通过以下命令编译的:

代码语言:javascript
复制
./b2 --build-type=complete -j 8 variant=debug address-model=64 link=static toolset=gcc install
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-15 16:35:13

嗯,我通过将Boost_DEBUG设置为ON来解决我的问题。在分析了调试信息之后,很明显问题是两个空变量:Boost_COMPILERBoost_ARCHITECTURE。为了解决这个问题,我只是通过查看完整的文件名来设置这些变量,例如:

我们有文件名libboost_log-clang14-mt-x32-1_79.lib,我们需要这个部分:-clang14-x32。您应该在文件名中查看此部分,并将其设置为CMake变量:

Boost_ARCHITECTURE = -x32

Boost_COMPILER = -clang14

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73362438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档