【发布时间】: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替换