5

尝试将 Irrlicht 静态库包含到我的 cmake 项目中时出现编译错误

编译错误:

max@max-MS-7369:~/Desktop/survival/build$ make 扫描目标生存的依赖
[ 33%] 构建 CXX 对象 src/CMakeFiles/survival.dir/technic.cpp.o
[ 66%] 构建 CXX 对象 src/CMakeFiles/survival.dir/render.cpp.o
[100%] 构建 CXX 对象 src/CMakeFiles/survival.dir/survival.cpp.o
链接 CXX 可执行文件 ../debug/survival
/usr/bin/ld: ../../irrlicht/lib/Linux/libIrrlicht.a(CIrrDeviceLinux.o): 未定义对符号“XConvertSelection”的引用
/usr/bin/ld:注意:'XConvertSelection' 在 DSO /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/libX11.so 中定义尝试将其添加到链接器命令行
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/libX11.so:无法读取符号:无效操作
collect2: ld 返回 1 个退出状态
make[2]: *** [调试/生存] 错误 1
make[1]: *** [src/CMakeFiles/survival.dir/all] 错误 2
make: *** [全部] 错误 2
max@max-MS-7369:~/Desktop/survival/build$

这就是我尝试包含库的方式:

# 查找 irrlicht 的依赖项
FIND_PACKAGE(ZLIB)
FIND_PACKAGE(X11)
FIND_PACKAGE(OpenGL)
# 包括
设置(survival_CUSTOM_INCLUDES
    ${ZLIB_INCLUDE_DIR}
    ${X11_INCLUDE_DIR}
    ${OPENGL_INCLUDE_DIR}
    ${survival_SOURCE_DIR}/irrlicht/include
    )
# 库
设置(survival_CUSTOM_LIBRARIES
    ${ZLIB_LIBRARIES}
    ${X11_LIBRARIES}
    ${OPENGL_LIBRARIES}
    ${survival_SOURCE_DIR}/irrlicht/lib/Linux/libIrrlicht.a
    )

我不明白为什么它说它找不到XConvertSelection,即使我已经包含了 X11 库。

4

1 回答 1

4

我添加了这两个库来修复它

/usr/lib/x86_64-linux-gnu/libX11.so
/usr/lib/x86_64-linux-gnu/libXxf86vm.so.1

它们没有包含在 FIND_PACKAGE() 给出的库中

于 2013-02-08T14:00:53.650 回答