我正在尝试制作一个将从.dot文件生成带有图形的图像的函数,因此我必须使用graphviz库,这是此函数:
#include <fstream>
#include <gvc.h>
bool draw_image(const string& path) {
GVC_t *gvc;
Agraph_t *gr;
FILE *fp;
gvc = gvContext();
fp = fopen((path + ".dot").c_str(), "r");
gr = agread(fp, nullptr);
gvLayout(gvc, gr, "dot");
gvRender(gvc, gr, "png", fopen((path + ".png").c_str(), "w"));
gvFreeLayout(gvc, gr);
agclose(gr);
return (gvFreeContext(gvc));
}
我正在使用clion IDE和cmake,所以这是我的CMakelists.txt
:
cmake_minimum_required(VERSION 3.16)
project(untitled)
set(CMAKE_CXX_STANDARD 14)
INCLUDE_DIRECTORIES(SYSTEM "/usr/include/graphviz/")
add_executable(untitled main.cpp)
TARGET_LINK_LIBRARIES(untitled LINK_PUBLIC "/usr/lib/x86_64-linux-gnu/libcgraph.so")
问题是,当我构建项目时,出现类似以下错误 undefined reference to 'gvContext'
但是clion可以看到此功能并gvc.h
正确引用,所以我认为问题出在CMakeLists.txt
我不明白如何正确引用CMake中的外部库以及指定哪个文件。那我该怎么办呢?
gvContext
在中libgvc.so
,因此您的最终CMake行应显示为:
target_link_libraries(untitled PUBLIC cgraph gvc)
这利用了target_link_libraries
文档的“普通库名称”部分。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句