CMake无法识别源码编译的Boost库(Boost_DEBUG路径正确)
问题:CMake无法找到Emscripten编译的Boost 1.85.0库
已执行操作
1. 使用Emscripten编译Boost 1.85.0
通过以下命令成功完成编译:
git clone --recursive https://github.com/boostorg/boost.git --branch 1.85.0 cd boost ./bootstrap.sh source ~/emsdk/emsdk_env.sh ./b2 toolset=emscripten --with-graph --with-filesystem --with-program_options
2. 配置CMake项目以使用本地Boost库
执行以下命令尝试配置CMake项目:
git clone https://.../cmakeproject.git cmakeproject mkdir binaries cd binaries emcmake cmake -DBoost_DEBUG=1 -DBOOST_ROOT=/home/andy/boost ../cmakeproject
出现的错误
CMake执行后输出如下错误信息:
-- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:1673 ] _boost_TEST_VERSIONS = "1.77.0;1.77;...;1.33.0;1.33" -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:1674 ] Boost_USE_MULTITHREADED = "TRUE" -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:1675 ] Boost_USE_STATIC_LIBS = <unset> -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:1676 ] Boost_USE_STATIC_RUNTIME = <unset> -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:1677 ] Boost_ADDITIONAL_VERSIONS = <unset> -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:1678 ] Boost_NO_SYSTEM_PATHS = <unset> -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:1710 ] BOOST_ROOT = "/home/andy/boost" -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:1711 ] ENV{BOOST_ROOT} = <unset> -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:1712 ] BOOST_INCLUDEDIR = <unset> -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:1713 ] ENV{BOOST_INCLUDEDIR} = <unset> -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:1714 ] BOOST_LIBRARYDIR = <unset> -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:1715 ] ENV{BOOST_LIBRARYDIR} = <unset> -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:1787 ] _boost_INCLUDE_SEARCH_DIRS = "/home/andy/boost/include;/home/andy/boost;PATHS;C:/boost/include;C:/boost;/sw/local/include" -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:1788 ] _boost_PATH_SUFFIXES = "boost-1_77_0;boost_1_77_0;...;boost/boost-1_33;boost/boost_1_33" -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:1873 ] Boost_LIB_PREFIX = "" -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:1874 ] Boost_NAMESPACE = "boost" -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:953 ] _boost_COMPILER = "-clang190" (guessed) -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:1910 ] _boost_MULTITHREADED = "-mt" -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:1988 ] _boost_ARCHITECTURE_TAG = "" (detected) -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:1992 ] _boost_RELEASE_ABI_TAG = "-" -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:1993 ] _boost_DEBUG_ABI_TAG = "-d" -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:2053 ] _boost_LIBRARY_SEARCH_DIRS_RELEASE = "/home/andy/boost/lib;/home/andy/boost/stage/lib;Boost_INCLUDE_DIR-NOTFOUND/lib;Boost_INCLUDE_DIR-NOTFOUND/../lib;Boost_INCLUDE_DIR-NOTFOUND/stage/lib;PATHS;C:/boost/lib;C:/boost;/sw/local/lib" -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:2054 ] _boost_LIBRARY_SEARCH_DIRS_DEBUG = "/home/andy/boost/lib;/home/andy/boost/stage/lib;Boost_INCLUDE_DIR-NOTFOUND/lib;Boost_INCLUDE_DIR-NOTFOUND/../lib;Boost_INCLUDE_DIR-NOTFOUND/stage/lib;PATHS;C:/boost/lib;C:/boost;/sw/local/lib" -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:2239 ] Searching for FILESYSTEM_LIBRARY_RELEASE: boost_filesystem-clang190-mt-;boost_filesystem-clang190-mt;boost_filesystem-clang190-mt;boost_filesystem-mt-;boost_filesystem-mt;boost_filesystem-mt;boost_filesystem-mt;boost_filesystem -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:2294 ] Searching for FILESYSTEM_LIBRARY_DEBUG: boost_filesystem-clang190-mt-d-;boost_filesystem-clang190-mt-d;boost_filesystem-clang190-mt-d;boost_filesystem-mt-d-;boost_filesystem-mt-d;boost_filesystem-mt-d;boost_filesystem-mt;boost_filesystem -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:2239 ] Searching for GRAPH_LIBRARY_RELEASE: boost_graph-clang190-mt-;boost_graph-clang190-mt;boost_graph-clang190-mt;boost_graph-mt-;boost_graph-mt;boost_graph-mt;boost_graph-mt;boost_graph -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:2294 ] Searching for GRAPH_LIBRARY_DEBUG: boost_graph-clang190-mt-d-;boost_graph-clang190-mt-d;boost_graph-clang190-mt-d;boost_graph-mt-d-;boost_graph-mt-d;boost_graph-mt-d;boost_graph-mt;boost_graph -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:2239 ] Searching for PROGRAM_OPTIONS_LIBRARY_RELEASE: boost_program_options-clang190-mt-;boost_program_options-clang190-mt;boost_program_options-clang190-mt;boost_program_options-mt-;boost_program_options-mt;boost_program_options-mt;boost_program_options-mt;boost_program_options -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:2294 ] Searching for PROGRAM_OPTIONS_LIBRARY_DEBUG: boost_program_options-clang190-mt-d-;boost_program_options-clang190-mt-d;boost_program_options-clang190-mt-d;boost_program_options-mt-d-;boost_program_options-mt-d;boost_program_options-mt-d;boost_program_options-mt;boost_program_options -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:2239 ] Searching for SYSTEM_LIBRARY_RELEASE: boost_system-clang190-mt-;boost_system-clang190-mt;boost_system-clang190-mt;boost_system-mt-;boost_system-mt;boost_system-mt;boost_system-mt;boost_system -- [ /usr/share/cmake-3.22/Modules/FindBoost.cmake:2294 ] Searching for SYSTEM_LIBRARY_DEBUG: boost_system-clang190-mt-d-;boost_system-clang190-mt-d;boost_system-clang190-mt-d;boost_system-mt-d-;boost_system-mt-d;boost_system-mt-d;boost_system-mt;boost_system CMake Error at /usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message): Could NOT find Boost (missing: filesystem graph program_options system) (found version "1.85.0") Call Stack (most recent call first): /usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE) /usr/share/cmake-3.22/Modules/FindBoost.cmake:2360 (find_package_handle_standard_args) cmake/FindDependencies.cmake:7 (find_package) CMakeLists.txt:99 (include)
已确认的细节
- CMake已正确识别Boost版本为1.85.0,说明头文件路径配置正常
- 编译生成的库文件存在于
/home/andy/boost/stage/lib目录下:
$ ls /home/andy/boost/stage/lib cmake libboost_atomic.so.1.85.0 libboost_filesystem.so.1.85.0 libboost_graph.so.1.85.0 libboost_program_options.so.1.85.0 libboost_regex.so.1.85.0 libboost_system.so.1.85.0 libboost_atomic.a libboost_filesystem.a libboost_graph.a libboost_program_options.a libboost_regex.a libboost_system.a libboost_atomic.so libboost_filesystem.so libboost_graph.so libboost_program_options.so libboost_regex.so libboost_system.so
- CMake的库搜索路径已包含
/home/andy/boost/stage/lib(可从_boost_LIBRARY_SEARCH_DIRS_RELEASE和_boost_LIBRARY_SEARCH_DIRS_DEBUG的输出中确认) - 测试环境为WSL Ubuntu 22.04,已在两台全新的WSL环境中复现相同问题
内容的提问来源于stack exchange,提问作者andynewman
相关产品推荐
相关产品推荐

