标题说明了一切。在链接方面我有点迷路。我在应用程序中使用crossguid
。我已经运行了installation steps,但是在尝试make
项目时,我得到了:
//usr/local/lib/libcrossguid.a(guid.cpp.o): In function `xg::newGuid()':
guid.cpp:(.text+0x133c): undefined reference to `uuid_generate'
我正在运行Ubuntu 18.04 LTS。安装uuid-dev
会将uuid.h
安装到/usr/include
。
库(libuuid.a
)安装在/usr/lib/x86_64-linux-gnu
。
在安装crossguid
时,它会找到libuuid.o
:
-- Found LibUUID: /usr/lib/x86_64-linux-gnu/libuuid.o
CMakeLists.txt
cmake_minimum_required(VERSION 3.5.1)
project(test_project)
set(CMAKE_BUILD_TYPE Debug)
# set(CMAKE_BUILD_TYPE Release)
set(CMAKE_CXX_STANDARD 14)
include_directories(include)
add_executable(${PROJECT_NAME}
...
)
target_link_libraries(${PROJECT_NAME}
pistache
pthread
uuid
crossguid
)
我不确定是否需要在此级别定位uuid
库。请让我知道是否必须。
我不确定源是否相关,因为它似乎是我项目之外的链接问题,但无论如何我都会将其包括在内:
Event.h
#ifndef Event_H_
#define Event_H_
#include <crossguid/guid.hpp>
class Event {
public:
...
xg::Guid getEventId();
void setEventId();
bool eventIdIsSet() const;
void unsetEventId();
...
protected:
xg::Guid _eventId;
bool _eventIdIsSet;
...
};
#endif /* Event_H_ */
Event.cpp
#include "../include/Event.h"
xg::Guid Event::getEventId() {
return _eventId;
}
void Event::setEventId() {
_eventId = xg::newGuid();
}
在我看来crossguid
能够找到uuid
,所以我不确定为什么会遇到麻烦。