【问题标题】:Error reloading cmake project-"Could NOT find Boost"重新加载 cmake 项目时出错-“找不到 Boost”
【发布时间】:2021-09-04 22:30:28
【问题描述】:

我是 Cmake 和 boost 的新手。我现在正在开发一个开源程序,并想重新加载 cmake 项目。

我已经用brew(MacOS)安装了boost 1.74.0,我检查了目录“/usr/local/Cellar/boost/1.74.0”,找到了lib目录“/usr/local/Cellar/boost /1.74.0/lib" 具有预期的 .a 和 .dylib 文件。 以下是lib目录中的部分文件:

-r--r--r--   1 lulijun  staff   9550840  8 11  2020 libboost_regex-mt.a
-r--r--r--   1 lulijun  staff   1004840  6 21 11:20 libboost_regex-mt.dylib
-r--r--r--   1 lulijun  staff   9550840  8 11  2020 libboost_regex.a
-r--r--r--   1 lulijun  staff   1004648  6 21 11:20 libboost_regex.dylib

但是当我尝试重新加载 cmake 项目时,出现以下问题

-- Could NOT find Boost: missing: thread regex system filesystem date_time program_options (found /usr/local/lib/cmake/Boost-1.74.0/BoostConfig.cmake (found suitable version "1.74.0", minimum required is "1.74.0"))



  CMake Error at src/service/CMakeLists.txt:32 (add_executable):
  Target "palo_be" links to target "Boost::regex" but the target was not
  found.  Perhaps a find_package() call is missing for an IMPORTED target, or
  an ALIAS target is missing?

这是我在 cmake 文件中的 boost 配置:

# Set Boost
set(Boost_DEBUG FALSE)
set(Boost_USE_MULTITHREADED ON)
set(BOOST_ROOT /usr/local/Cellar/boost/1.74.0)
set(Boost_NO_SYSTEM_PATHS ON)
set(Boost_NO_BOOST_CMAKE OFF)

SET(Boost_INCLUDE_DIR /usr/local/Cellar/boost)


find_package(Boost 1.74.0 COMPONENTS thread regex system filesystem date_time program_options)

我有什么遗漏吗?我该如何解决这个问题?

这是 Boost_DEUBUG = TRUE 的完整消息,有太多 CMake 错误但它们看起来一样,所以我只复制其中的 2 个。

-- GLIBC_COMPATIBILITY is ON
-- Build type is DEBUG
-- Build target arch is x86_64
-- make test: ON
-- defined PIC_LIB_PATH
-- build gensrc if necessary
/Library/Developer/CommandLineTools/usr/bin/make -C script
/Users/lulijun/git/github/incubator-doris/gensrc/script/gen_build_version.sh
/Library/Developer/CommandLineTools/usr/bin/make -C proto
make[1]: Nothing to be done for `all'.
/Library/Developer/CommandLineTools/usr/bin/make -C thrift
make[1]: Nothing to be done for `all'.
-- Found Boost 1.74.0 at /usr/local/lib/cmake/Boost-1.74.0
--   Requested configuration: QUIET COMPONENTS thread;regex;system;filesystem;date_time;program_options
-- BoostConfig: find_package(boost_headers 1.74.0 EXACT CONFIG  QUIET HINTS /usr/local/lib/cmake)
-- Found boost_headers 1.74.0 at /usr/local/lib/cmake/boost_headers-1.74.0
-- BoostConfig: find_package(boost_thread 1.74.0 EXACT CONFIG  QUIET HINTS /usr/local/lib/cmake)
-- Found boost_thread 1.74.0 at /usr/local/lib/cmake/boost_thread-1.74.0
-- Boost toolset is clang-darwin100 (AppleClang 10.0.0.10001044)
-- Scanning /usr/local/lib/cmake/boost_thread-1.74.0/libboost_thread-variant*.cmake
--   Including /usr/local/lib/cmake/boost_thread-1.74.0/libboost_thread-variant-mt-shared.cmake
--   [ ] libboost_thread-mt.dylib
--   Including /usr/local/lib/cmake/boost_thread-1.74.0/libboost_thread-variant-mt-static.cmake
--   [ ] libboost_thread-mt.a
-- BoostConfig: find_package(boost_regex 1.74.0 EXACT CONFIG  QUIET HINTS /usr/local/lib/cmake)
-- Found boost_regex 1.74.0 at /usr/local/lib/cmake/boost_regex-1.74.0
-- Boost toolset is clang-darwin100 (AppleClang 10.0.0.10001044)
-- Scanning /usr/local/lib/cmake/boost_regex-1.74.0/libboost_regex-variant*.cmake
--   Including /usr/local/lib/cmake/boost_regex-1.74.0/libboost_regex-variant-mt-shared.cmake
--   [ ] libboost_regex-mt.dylib
--   Including /usr/local/lib/cmake/boost_regex-1.74.0/libboost_regex-variant-mt-static.cmake
--   [ ] libboost_regex-mt.a
--   Including /usr/local/lib/cmake/boost_regex-1.74.0/libboost_regex-variant-shared.cmake
--   [ ] libboost_regex.dylib
--   Including /usr/local/lib/cmake/boost_regex-1.74.0/libboost_regex-variant-static.cmake
--   [ ] libboost_regex.a
-- BoostConfig: find_package(boost_system 1.74.0 EXACT CONFIG  QUIET HINTS /usr/local/lib/cmake)
-- Found boost_system 1.74.0 at /usr/local/lib/cmake/boost_system-1.74.0
-- Boost toolset is clang-darwin100 (AppleClang 10.0.0.10001044)
-- Scanning /usr/local/lib/cmake/boost_system-1.74.0/libboost_system-variant*.cmake
--   Including /usr/local/lib/cmake/boost_system-1.74.0/libboost_system-variant-mt-shared.cmake
--   [ ] libboost_system-mt.dylib
--   Including /usr/local/lib/cmake/boost_system-1.74.0/libboost_system-variant-mt-static.cmake
--   [ ] libboost_system-mt.a
--   Including /usr/local/lib/cmake/boost_system-1.74.0/libboost_system-variant-shared.cmake
--   [ ] libboost_system.dylib
--   Including /usr/local/lib/cmake/boost_system-1.74.0/libboost_system-variant-static.cmake
--   [ ] libboost_system.a
-- BoostConfig: find_package(boost_filesystem 1.74.0 EXACT CONFIG  QUIET HINTS /usr/local/lib/cmake)
-- Found boost_filesystem 1.74.0 at /usr/local/lib/cmake/boost_filesystem-1.74.0
-- Boost toolset is clang-darwin100 (AppleClang 10.0.0.10001044)
-- Scanning /usr/local/lib/cmake/boost_filesystem-1.74.0/libboost_filesystem-variant*.cmake
--   Including /usr/local/lib/cmake/boost_filesystem-1.74.0/libboost_filesystem-variant-mt-shared.cmake
--   [ ] libboost_filesystem-mt.dylib
--   Including /usr/local/lib/cmake/boost_filesystem-1.74.0/libboost_filesystem-variant-mt-static.cmake
--   [ ] libboost_filesystem-mt.a
--   Including /usr/local/lib/cmake/boost_filesystem-1.74.0/libboost_filesystem-variant-shared.cmake
--   [ ] libboost_filesystem.dylib
--   Including /usr/local/lib/cmake/boost_filesystem-1.74.0/libboost_filesystem-variant-static.cmake
--   [ ] libboost_filesystem.a
-- BoostConfig: find_package(boost_date_time 1.74.0 EXACT CONFIG  QUIET HINTS /usr/local/lib/cmake)
-- Found boost_date_time 1.74.0 at /usr/local/lib/cmake/boost_date_time-1.74.0
-- Boost toolset is clang-darwin100 (AppleClang 10.0.0.10001044)
-- Scanning /usr/local/lib/cmake/boost_date_time-1.74.0/libboost_date_time-variant*.cmake
--   Including /usr/local/lib/cmake/boost_date_time-1.74.0/libboost_date_time-variant-mt-shared.cmake
--   [ ] libboost_date_time-mt.dylib
--   Including /usr/local/lib/cmake/boost_date_time-1.74.0/libboost_date_time-variant-mt-static.cmake
--   [ ] libboost_date_time-mt.a
--   Including /usr/local/lib/cmake/boost_date_time-1.74.0/libboost_date_time-variant-shared.cmake
--   [ ] libboost_date_time.dylib
--   Including /usr/local/lib/cmake/boost_date_time-1.74.0/libboost_date_time-variant-static.cmake
--   [ ] libboost_date_time.a
-- BoostConfig: find_package(boost_program_options 1.74.0 EXACT CONFIG  QUIET HINTS /usr/local/lib/cmake)
-- Found boost_program_options 1.74.0 at /usr/local/lib/cmake/boost_program_options-1.74.0
-- Boost toolset is clang-darwin100 (AppleClang 10.0.0.10001044)
-- Scanning /usr/local/lib/cmake/boost_program_options-1.74.0/libboost_program_options-variant*.cmake
--   Including /usr/local/lib/cmake/boost_program_options-1.74.0/libboost_program_options-variant-mt-shared.cmake
--   [ ] libboost_program_options-mt.dylib
--   Including /usr/local/lib/cmake/boost_program_options-1.74.0/libboost_program_options-variant-mt-static.cmake
--   [ ] libboost_program_options-mt.a
--   Including /usr/local/lib/cmake/boost_program_options-1.74.0/libboost_program_options-variant-shared.cmake
--   [ ] libboost_program_options.dylib
--   Including /usr/local/lib/cmake/boost_program_options-1.74.0/libboost_program_options-variant-static.cmake
--   [ ] libboost_program_options.a
-- Could NOT find Boost: missing: thread regex system filesystem date_time program_options (found /usr/local/lib/cmake/Boost-1.74.0/BoostConfig.cmake (found suitable version "1.74.0", minimum required is "1.74.0"))
-- Compiler Flags:  -Wall -Wno-sign-compare -Wno-unknown-pragmas -pthread -fno-strict-aliasing -fno-omit-frame-pointer -std=gnu++17 -D__STDC_FORMAT_MACROS -Wno-deprecated -Wno-vla -DBOOST_DATE_TIME_POSIX_TIME_STD_CONFIG -DBOOST_SYSTEM_NO_DEPRECATED -DBRPC_ENABLE_CPU_PROFILER -DBOOST_UUID_RANDOM_PROVIDER_FORCE_POSIX=1 -msse4.2  -Wno-attributes -DS2_USE_GFLAGS -DS2_USE_GLOG -DDORIS_WITH_MYSQL -faligned-new  -g -Wno-unused-local-typedefs -ggdb3 -O0 -gdwarf-2
-- Some symbols from glibc will be replaced for compatibility
-- Configuring done
CMake Error at src/service/CMakeLists.txt:32 (add_executable):
  Target "palo_be" links to target "Boost::regex" but the target was not
  found.  Perhaps a find_package() call is missing for an IMPORTED target, or
  an ALIAS target is missing?


CMake Error at src/service/CMakeLists.txt:32 (add_executable):
  Target "palo_be" links to target "Boost::system" but the target was not
  found.  Perhaps a find_package() call is missing for an IMPORTED target, or
  an ALIAS target is missing?

【问题讨论】:

  • 请将 Boost_DEBUG 设置为 TRUE 并重新运行 CMake。这应该可以让您更好地了解发生了什么。
  • 请粘贴完整的 CMake 输出消息。
  • @Botje 谢谢,我将 Boost_DEBUG 设置为 TRUE,发现它确实扫描了 lib 目录并找到了一些关于线程和正则表达式等的文件,但下一步是“找不到 Boost”错误仍然出现。完整的消息太长,所以我把它粘贴在问题的正文中
  • @prehistoricpenguin 感谢您抽出宝贵时间,完整的消息太长,所以我将其粘贴在问题的正文中。
  • 好像是链接部分的问题,不是你粘贴的find_package部分,尝试用链接中的boost_thread替换

标签: c++ boost


【解决方案1】:

最后的评论揭示了您的问题:您(或您的系统)选择了 Boost 的标志组合,导致无法找到正确的库:

  • Boost_USE_STATIC_LIBS: 只选择要包含在程序中的 .a 文件
  • Boost_USE_STATIC_RUNTIME:只选择“静态链接到 C++ 运行时”的文件。它们的变体中有一个“s”标签,但在您的系统上不存在。

至少关闭Boost_USE_STATIC_RUNTIME,然后由你决定是否要与Boost动态链接。

【讨论】:

    猜你喜欢
    • 2019-07-02
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    • 2011-04-18
    • 2020-05-19
    • 2011-12-26
    • 2022-01-02
    相关资源
    最近更新 更多