尝试将Irrlicht静态库包含到我的cmake项目中时出现编译错误
编译错误:
max @ max-MS-7369:〜/Desktop/survival/build $使目标生存扫描依赖项
[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
使:*** [全部]错误2
max @ max-MS-7369:〜/桌面/生存/构建$
这就是我尝试包含lib的方式:
#查找irrlicht的依赖项
FIND_PACKAGE(ZLIB)
FIND_PACKAGE(X11)
FIND_PACKAGE(OpenGL)
#包括
设置(surviving_CUSTOM_INCLUDES
$ {ZLIB_INCLUDE_DIR}
$ {X11_INCLUDE_DIR}
$ {OPENGL_INCLUDE_DIR}
$ {survival_SOURCE_DIR}/irrlicht/include
)
#库
设置(surviving_CUSTOM_LIBRARIES
$ {ZLIB_LIBRARIES}
$ {X11_LIBRARIES}
$ {OPENGL_LIBRARIES}
$ {survival_SOURCE_DIR}/irrlicht/lib/Linux/libIrrlicht.a
)
我不明白为什么即使我包含X11库,它也找不到XConvertSelection
的原因。
最佳答案
我添加了两个库来修复它
/usr/lib/x86_64-linux-gnu/libX11.so
/usr/lib/x86_64-linux-gnu/libXxf86vm.so.1
它们不包含在FIND_PACKAGE()提供的库中