firebreath 프레임 워크를 사용하여 내 프로그램에서 라이브러리를 연결하려고합니다.C++/cmake로 정적 라이브러리 링크하기
그래서이 코드를 projectDef.cmake에 추가합니다.
include_directories(/usr/include/giblib)
include_directories(/usr/include/X11)
add_library(giblib_ptm STATIC IMPORTED)
set_property(TARGET giblib_ptm PROPERTY IMPORTED_LOCATION /usr/lib/libgiblib.a)
add_library(X11_ptm STATIC IMPORTED)
set_property(TARGET X11_ptm PROPERTY IMPORTED_LOCATION /usr/lib/i386-linux-gnu/libX11.a)
add_library(Imlib_ptm STATIC IMPORTED)
set_property(TARGET Imlib_ptm PROPERTY IMPORTED_LOCATION /usr/lib/libImlib2.a)
target_link_libraries(Printmade2 giblib_ptm X11_ptm Imlib_ptm)
왜 내 .cpp 파일에 'include_directories의' 내가 헤더가 포함되어 파일을 추가합니다.
#include <giblib.h>
#include <Xlib.h>
후 이하게 실행이 오류 메시지가 나타납니다.
/usr/lib/i386-linux-gnu/libX11.a(OpenDis.o): In function `OutOfMemory':
(.text+0x459): undefined reference to `xcb_disconnect'
/usr/lib/i386-linux-gnu/libX11.a(OpenDis.o): In function `XOpenDisplay':
(.text+0x8f5): undefined reference to `xcb_get_setup'
/usr/lib/i386-linux-gnu/libX11.a(OpenDis.o): In function `XOpenDisplay':
(.text+0xedb): undefined reference to `xcb_get_maximum_request_length'
/usr/lib/i386-linux-gnu/libX11.a(xcb_disp.o): In function `_XConnectXCB':
(.text+0x176): undefined reference to `xcb_parse_display'
/usr/lib/i386-linux-gnu/libX11.a(xcb_disp.o): In function `_XConnectXCB':
(.text+0x1d7): undefined reference to `xcb_connect_to_display_with_auth_info'
...
/usr/lib/i386-linux-gnu/libX11.a(xcb_io.o): In function `poll_for_event':
(.text+0x30e): undefined reference to `xcb_poll_for_event'
/usr/lib/i386-linux-gnu/libX11.a(xcb_io.o): In function `poll_for_response':
(.text+0x6b4): undefined reference to `xcb_poll_for_reply'
/usr/lib/i386-linux-gnu/libX11.a(xcb_io.o): In function `_XSend':
(.text+0x85f): undefined reference to `xcb_writev'
/usr/lib/i386-linux-gnu/libX11.a(xcb_io.o): In function `_XReadEvents':
(.text+0xa1f): undefined reference to `xcb_connection_has_error'
....
나는이 오류가 'add_library' 및 'set_property',
에 의해 원인을 생각하지만 난 이유를 이해할 수 없다.
내 프로그램에서 정적 라이브러리를 연결하려면 어떻게해야합니까?