首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CMake "uuid“链接失败

CMake "uuid“链接失败
EN

Stack Overflow用户
提问于 2016-08-21 19:15:01
回答 1查看 5.8K关注 0票数 5

当我试图构建时,我会得到以下错误:

对“uuid_generate”的未定义引用 对“uuid_unparse”的未定义引用

这是我的CMakeLists.txt文件:

代码语言:javascript
运行
复制
cmake_minimum_required(VERSION 3.6)
project(Synergy)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -luuid -pthread")
find_package (Threads)

set(SOURCE_FILES Functions.cpp Inotify.cpp Inotify.h main.cpp Master.h Message.cpp Message.h Server.cpp Server.h Threads.cpp )
add_executable(synergy_server ${SOURCE_FILES})

我可以通过自己创建Makefile并添加-luuid标志来解决这个问题。

但是我想用CMake来做这件事,我试着在CMakeLists.txt文件中添加这个标志,但是它没有帮助:

我已经安装了uuid-dev(这不是问题)

希望你能帮我。

祝您今天愉快

编辑:我把target_link_libraries(Synergy uuid)添加到文件的末尾,它可以工作,但是有一个更好的方法(请看下面的答案)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-21 20:06:26

这不是编写CMake脚本的好方法。CMake提供了一组丰富的功能,您必须使用这些功能来描述您想要做的事情。

在您的情况下,您必须避免像您所做的那样直接设置标志。这样,您将能够更改编译器,甚至操作系统,您的脚本仍将工作。

在你的情况下,我会写这样的东西:

代码语言:javascript
运行
复制
cmake_minimum_required(VERSION 3.6)
project(Synergy)

set(CMAKE_CXX_STANDARD 11)

# using pkg-config to configure uuid
find_package(PkgConfig REQUIRED)
find_package(Threads REQUIRED)

pkg_search_module(UUID REQUIRED uuid)

set(SOURCE_FILES Functions.cpp Inotify.cpp Inotify.h main.cpp Master.h message.cpp Message.h Server.cpp Server.h Threads.cpp )
add_executable(synergy_server ${SOURCE_FILES})
target_include_directories(synergy_server PUBLIC ${UUID_INCLUDE_DIRS})
target_link_libraries(synergy_server ${UUID_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})

顺便问一下,uuid-dev是什么意思?我的身体里没有这样的东西

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39067960

复制
相关文章

相似问题

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