簡體   English   中英

使用 graphviz 庫配置 CMake

[英]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 中的外部庫以及要指定哪個文件。 那么我該怎么做呢?

gvContextlibgvc.so中,因此您的最終 CMake 行應為:

target_link_libraries(untitled PUBLIC cgraph gvc)

這利用了target_link_libraries文檔的“A plain library name”部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM