MinGW环境下CMake无法找到lboost_*系列依赖库问题求助
问题解决方法
核心问题是当前CMake配置未主动检索Boost库的安装路径、头文件与库文件位置,直接指定链接boost_filesystem时,链接器无法定位到你编译完成的Boost库文件,可按以下步骤修复:
- 第一步:替换原有CMakeLists.txt内容为如下配置,新增Boost库的查找逻辑
cmake_minimum_required(VERSION 3.7) project(obj_loader) # 新增Boost库查找配置 set(Boost_USE_STATIC_LIBS ON) set(Boost_USE_MULTITHREADED ON) find_package(Boost 1.77.0 REQUIRED COMPONENTS filesystem) if(Boost_FOUND) include_directories(${Boost_INCLUDE_DIRS}) endif() execute_process(COMMAND python -c "import tensorflow; print(tensorflow.sysconfig.get_include())" OUTPUT_VARIABLE Tensorflow_default_INCLUDE_DIRS) set(Tensorflow_INCLUDE_DIRS "${Tensorflow_default_INCLUDE_DIRS}" CACHE PATH "Tensorflow include path") include_directories(${Tensorflow_INCLUDE_DIRS}) set(CMAKE_CXX_STANDARD 11) set(SOURCE_FILES obj_loader.cpp) add_library(obj_loader SHARED ${SOURCE_FILES}) target_link_libraries(obj_loader ${Boost_LIBRARIES})
说明:如果你编译的是动态版本的Boost库,把set(Boost_USE_STATIC_LIBS ON)改为set(Boost_USE_STATIC_LIBS OFF)即可。
第二步:执行cmake生成Makefile时,显式指定你编译好的Boost库路径,参考命令如下(替换为你自己的Boost实际安装路径):
cmake .. -G "MinGW Makefiles" -DBOOST_ROOT=C:/boost_1_77_0 -DBoost_LIBRARY_DIR=C:/boost_1_77_0/stage/lib第三步:确认Boost编译环境匹配
你用的是MSYS2的MinGW工具链,必须确保你编译Boost时用的是同一套MinGW工具链,不能混用MSVC编译的Boost库,二者二进制不兼容;同时确认编译的Boost是64位版本,和你的系统、gcc架构匹配。
如果仍有报错,可以在cmake命令中额外补充参数指定Boost库的命名规则适配MinGW编译的版本,比如-DBoost_COMPILER=-mgw10 -DBoost_ARCHITECTURE=-x64。
内容的提问来源于stack exchange,提问作者shayan Hojati
相关产品推荐
相关产品推荐

