使用 X11 (c++) 为 lib 链接目标失败
Posted
技术标签:
【中文标题】使用 X11 (c++) 为 lib 链接目标失败【英文标题】:Linking target failed for lib with X11 (c++) 【发布时间】:2021-04-01 14:37:28 【问题描述】:我正在将 CMake C++ 项目转换为介子。剩下的一件事可以正常运行。 我在我的项目 lib 中使用了一个 X11 库。
使用 CMake,项目链接可以正常工作:
...
target_link_libraries(hamster ui util $GTKMM_LIBRARIES $X11_LIBRARIES -lX11 -lXtst -lXext)
如何在介子项目中添加-lX11 -lXtst -lXext
标志?我尝试了一些解决方案,例如link_args
,但没有帮助。我收到:
ninja: Entering directory `build'
[17/19] Linking target src/ui_lib/libui.so.
FAILED: src/ui_lib/libui.so
/home/repos/project/build/../src/ui_lib/ui/window/WindowBody.cpp:583: undefined reference to `XTestGrabControl'
【问题讨论】:
【参考方案1】:正确答案如下:
gtkmm_dep = dependency('gtkmm-3.0')
x11_dep = dependency('x11')
xtst_dep = dependency('xtst')
xext_dep = dependency('xext')
ui = library('ui', dependencies : [gtkmm_dep, x11_dep, xtst_dep, xext_dep, util_dep],
sources : [
'ui/window/WindowBody.h', 'ui/window/WindowBody.cpp',
]
)
ui_dep = declare_dependency(
include_directories : include_directories('.'),
link_with : ui
)
【讨论】:
以上是关于使用 X11 (c++) 为 lib 链接目标失败的主要内容,如果未能解决你的问题,请参考以下文章
是否可以用 C++ 为 X11 Xlib 编程而不是使用 C?