c - Using Graphviz with Clion in Windows -
i'm new using external libraries in c silly mistake. reference errors when try run below program using provided cmakelists.txt. can see issue is?
cmakelists.txt
cmake_minimum_required(version 3.6) project(learning) set(cmake_cxx_flags "${cmake_c_flags}") set(graphviz_include_dir "c:\\program files (x86)\\graphviz2.38\\include\\graphviz") set(source_files main.c) include_directories("${graphviz_include_dir}") add_executable(learning ${source_files})
main.c
#include <gvc.h> #include <cgraph.h> int main() { agraph_t *graph; agnode_t *nodea, *nodeb; agedge_t *edge1; agsym_t *symbol1; gvc_t *gvc; gvc = gvcontext(); graph = agopen( "graph", agdirected, null); nodea = agnode(graph, "nodea", 1); nodeb = agnode(graph, "nodeb", 1); edge1 = agedge(graph, nodea, nodeb, 0, 1); agsafeset(nodea, "color", "red", ""); gvlayoutjobs(gvc, graph); gvrenderjobs(gvc, graph); gvfreelayout(gvc, graph); }
output
"c:\program files\jetbrains\clion 2017.2.1\bin\cmake\bin\cmake.exe" --build e:\development\c\learning\cmake-build-debug --target learning -- -j 2 scanning dependencies of target learning [ 50%] building c object cmakefiles/learning.dir/main.c.obj [100%] linking c executable learning.exe cmakefiles\learning.dir/objects.a(main.c.obj): in function `main': e:/development/c/learning/main.c:38: undefined reference `gvcontext' e:/development/c/learning/main.c:39: undefined reference `_imp__agdirected' e:/development/c/learning/main.c:39: undefined reference `agopen' e:/development/c/learning/main.c:40: undefined reference `agnode' e:/development/c/learning/main.c:41: undefined reference `agnode' e:/development/c/learning/main.c:42: undefined reference `agedge' e:/development/c/learning/main.c:44: undefined reference `agsafeset' e:/development/c/learning/main.c:45: undefined reference `gvlayoutjobs' e:/development/c/learning/main.c:46: undefined reference `gvrenderjobs' e:/development/c/learning/main.c:47: undefined reference `gvfreelayout' collect2.exe: error: ld returned 1 exit status mingw32-make.exe[3]: *** [learning.exe] error 1 cmakefiles\learning.dir\build.make:96: recipe target 'learning.exe' failed mingw32-make.exe[2]: *** [cmakefiles/learning.dir/all] error 2 cmakefiles\makefile2:66: recipe target 'cmakefiles/learning.dir/all' failed cmakefiles\makefile2:78: recipe target 'cmakefiles/learning.dir/rule' failed mingw32-make.exe[1]: *** [cmakefiles/learning.dir/rule] error 2 mingw32-make.exe: *** [learning] error 2 makefile:117: recipe target 'learning' failed
edit -- edited cmakeslists add target_link_libraries error below
cmake_minimum_required(version 3.6) project(learning) set(cmake_cxx_flags "${cmake_c_flags}") set(graphviz_include_dir "c:\\program files (x86)\\graphviz2.38\\include\\graphviz") set(graphviz_lib_dir "c:\\program files (x86)\\graphviz2.38\\lib\\release\\lib") target_link_libraries( "${graphviz_lib_dir}" ) set(source_files main.c) include_directories("${graphviz_include_dir}") add_executable(learning ${source_files})
results in error
"c:\program files\jetbrains\clion 2017.2.1\bin\cmake\bin\cmake.exe" -dcmake_build_type=debug -g "codeblocks - mingw makefiles" e:\development\c\learning cmake error @ cmakelists.txt:8 (target_link_libraries): cannot specify link libraries target "c:\program files (x86)\graphviz2.38\lib\release\lib" not built project. -- configuring incomplete, errors occurred! see "e:/development/c/learning/cmake-build-debug/cmakefiles/cmakeoutput.log". [finished]
you need link in graphviz library using target_link_libraries(learning path/to/graphviz.so)
.
Comments
Post a Comment