使用CMake编译带有libuv的项目

3

我有一个小的异步UDP服务器 - RiDE

但我无法使用CMake构建它。当我尝试时,会出现错误:

undefined reference to 'uv_default_loop'
undefined reference to 'uv_udp_init'
...(other libuv functions)

但是当我使用以下命令构建它时:
gcc -std=c11 RiDE_server.h RiDE_server.cpp main.cpp -o main.x -Wall -luv

一切正常。

我认为问题在于 src/CMakeLists.txt 文件,但我不知道如何修复。在我的机器上,libuv头文件路径为 /usr/include ,libuv共享库的路径为 /usr/lib/x86-64-linux-gnu。


你在项目中使用 uv 库进行 link 了吗?你如何在 CMakeLists.txt 中添加 uv 库?能否请展示一下? - Some programmer dude
此外,请花些时间阅读帮助页面,特别是名为“我可以在这里问什么话题?”和“我应该避免提出哪些类型的问题?”的部分。同时,请参观一下了解如何提出好问题。最后,请学习如何创建一个最小、完整且可验证的示例 - Some programmer dude
@Someprogrammerdude 当你说“_link_”时,你指的是哪些命令? - k0shinus
1个回答

4

运行make VERBOSE=1命令。它运行哪个链接器命令?它必须缺少-luv。为了修复这个问题,可以在您的CMakeLists.txt中添加类似于以下内容的东西:

target_link_libraries(foo uv)

谢谢!我使用set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -luv")代替target_link_libraries,但出于某些原因它不起作用。 - k0shinus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接