首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cmake中的链接RE2

cmake中的链接RE2
EN

Stack Overflow用户
提问于 2022-07-27 15:00:37
回答 1查看 113关注 0票数 0

我试图使用谷歌的RE2 regex库,但我找不到任何关于如何链接到它的文档。文档只是解释了如何安装re2,但是没有任何CMAKE示例。目前,当我试图编译时,我得到

main.cpp:(.text.ZN3re23RE29FullMatchIJEEEbRKNS_11StringPieceERKS0_DpOTZN3re23RE29FullMatchIJEEEbRKNS_11StringPieceERKS0_DpOT+0x32):未定义的对“re2::RE2::FullMatchN”的引用(Re2:StringPiece&,Re2:Re2Const&,Re2:Re2::Arg* const*,int)‘clang: linker命令失败,退出代码1(使用-v查看调用)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-27 15:30:39

他们还没有记录链接到库的过程,但是看看他们的CMake,这样做是非常简单的。

仔细看re2/CMakeLists.txt末尾的那些行

代码语言:javascript
复制
install(TARGETS re2 EXPORT re2Targets
        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
        INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
install(EXPORT re2Targets
        DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/re2 NAMESPACE re2::)

这将在re2命名空间中导出目标re2

这意味着CMake脚本可以是这样的:

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.21)
project(myproject)
add_executable(myexec myexec.main.cpp)

# Find the installed re2 library
find_package(re2 REQUIRED)

# Link to the library and header files.
target_link_libraries(myexec PRIVATE re2::re2)

如果在自定义位置安装了库,请记住在CMake前缀中添加该自定义位置:

代码语言:javascript
复制
# inside myproject/build
cmake .. -DCMAKE_PREFIX_PATH=/path/to/custom/location/of/re2
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73140279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档