linux 未定义对boost::locale::generator::使用CMake项目生成的引用

vtwuwzda  于 2023-03-22  发布在  Linux
关注(0)|答案(1)|浏览(154)

我最近重新开始使用CMake做一个项目,但在重新构建它时遇到了麻烦。
问题是,在最后的链接步骤中,g++说它找不到对boost locale generate函数的引用,即使我已经使用find_package来获取boost并链接它。
以下是失败的步骤:

/usr/bin/c++ -m64 -O3 -DNDEBUG -m64 CMakeFiles/sable.dir/main.cpp.o -o ../sable  -Wl,-rpath,$HOME/.conan/data/yaml-cpp/0.6.3/_/_/package/607c93de2fe0fd7a16b1a720c8a32bd38084b7f0/lib libsable_lib.a $HOME/.conan/data/yaml-cpp/0.6.3/_/_/package/607c93de2fe0fd7a16b1a720c8a32bd38084b7f0/lib/libyaml-cpp.so /usr/lib/x86_64-linux-gnu/libboost_locale.so.1.74.0 /usr/lib/x86_64-linux-gnu/libboost_chrono.so.1.74.0 /usr/lib/x86_64-linux-gnu/libboost_system.so.1.74.0 /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.74.0 /usr/lib/x86_64-linux-gnu/libboost_atomic.so.1.74.0 /usr/lib/x86_64-linux-gnu/libicui18n.so /usr/lib/x86_64-linux-gnu/libicuuc.so /usr/lib/x86_64-linux-gnu/libicudata.so -ldl
/usr/bin/ld: libsable_lib.a(parse.cpp.o): in function `sable::TextParser::TextParser(sable::FontList&&, std::string const&, std::string const&)':
parse.cpp:(.text+0x551b): undefined reference to `boost::locale::generator::generate(std::string const&) const'

下面是我在CMake中找到依赖项的地方:

find_library(YAML yaml-cpp REQUIRED)
find_package(Boost 1.71.0 REQUIRED COMPONENTS locale)
find_package(ICU 66.1 REQUIRED COMPONENTS in uc dt)
message(STATUS ${Boost_LIBRARIES})

list(
    APPEND SABLE_LIBRARIES

    ${Boost_LIBRARIES}
    ${ICU_LIBRARIES}
)

这是我把所有东西联系起来的地方:

add_library(sable_lib STATIC ${SABLE_SOURCE_FILES})

target_link_libraries(sable_lib PUBLIC coverage_config ${YAML} ${SABLE_LIBRARIES} ${SABLE_FS_LIBRARIES} ${SABLE_PLATFORM_LIBRARIES})

add_executable(
    sable

    "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp"
)

target_link_libraries(
    sable sable_lib
)

这在过去的某个时候肯定是有效的。唯一改变的是,我切换到从Conan获取我的一个依赖项,但它不是boost或ICU组件。我正在使用GCC 11构建Kubuntu 22.04,如果这有任何区别的话。

ulydmbyx

ulydmbyx1#

我想明白了:在我的默认柯南配置文件中,我设置了compiler.libcxx=libstdc++,而它应该是compiler.libcxx=libstdc++11

相关问题