[英]Configuring CMake with graphviz library
我正在嘗試制作一個 function 它將生成一個帶有來自.dot 文件的圖形的圖像,所以我必須使用 graphviz 庫,這里是這個 function:
#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
文檔的“A plain library name”部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.