我使用Boost 1.79和Windows 10,为了构建Boost库,我使用了TDM MinGW。在尝试用CMake构建我的测试程序之后,我得到了下一个错误:
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
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库是通过以下命令编译的:
./b2 --build-type=complete -j 8 variant=debug address-model=64 link=static toolset=gcc install发布于 2022-08-15 16:35:13
嗯,我通过将Boost_DEBUG设置为ON来解决我的问题。在分析了调试信息之后,很明显问题是两个空变量:Boost_COMPILER和Boost_ARCHITECTURE。为了解决这个问题,我只是通过查看完整的文件名来设置这些变量,例如:
我们有文件名libboost_log-clang14-mt-x32-1_79.lib,我们需要这个部分:-clang14和-x32。您应该在文件名中查看此部分,并将其设置为CMake变量:
Boost_ARCHITECTURE = -x32
Boost_COMPILER = -clang14
https://stackoverflow.com/questions/73362438
复制相似问题