我试图使用谷歌的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查看调用)
发布于 2022-07-27 15:30:39
他们还没有记录链接到库的过程,但是看看他们的CMake,这样做是非常简单的。
仔细看re2/CMakeLists.txt末尾的那些行
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脚本可以是这样的:
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前缀中添加该自定义位置:
# inside myproject/build
cmake .. -DCMAKE_PREFIX_PATH=/path/to/custom/location/of/re2https://stackoverflow.com/questions/73140279
复制相似问题