如何链接项目符号库(来自FindBullet.cmake)?

How to link bullet libraries(from FindBullet.cmake)?

本文关键字:来自 FindBullet cmake 项目 何链接 链接 符号      更新时间:2023-10-16

我正在开发一个游戏,正在尝试使用子弹。但是,(似乎)我在链接项目符号库时遇到问题。编辑2:我在github上有我的代码

这实际上是我第一次使用cmake。我已经搜索了 FindBullet.cmake 文件,可以找到变量来链接库(${BULLET_LIBRARIES}),但链接变量中的库并没有做任何事情。

find_package(Bullet REQUIRED)
include_directories(${BULLET_INCLUDE_DIR})
target_link_libraries(3DPlatformer ${BULLET_LIBRARIES})

我希望我的代码能够编译,但相反,我得到了一堆"未定义的引用",然后是它读取的项目符号中的任何函数。 编辑:

more undefined references to `btAlignedAllocInternal(unsigned long, int)' follow

^ 这就是我得到的一堆

collect2: error: ld returned 1 exit status

这是最后一个错误。 完全错误

需要安装libbullet-dev

sudo apt-get install libbullet-dev

我的问题是我的一个 if 语句被破坏了。 我的 if 语句:

if(USE_SYSTEM_BULLET)
find_package(Bullet REQUIRED)
include_directories(${BULLET_INCLUDE_DIR})
target_link_libraries(3DPlatformer ${BULLET_LIBRARIES} -lGL -lGLU)
else(USE_SYSTEM_BULLET)
add_subdirectory("${PROJECT_SOURCE_DIR}/lib/bullet" )
include_directories("${PROJECT_SOURCE_DIR}/lib/bullet/src")
endif(USE_SYSTEM_BULLET)

以某种方式触发了所有代码而不是其中一些代码。 像这样注释代码:

#if(USE_SYSTEM_BULLET)
find_package(Bullet REQUIRED)
include_directories(${BULLET_INCLUDE_DIR})
target_link_libraries(3DPlatformer ${BULLET_LIBRARIES} -lGL -lGLU)
#else(USE_SYSTEM_BULLET)
#   add_subdirectory("${PROJECT_SOURCE_DIR}/lib/bullet" )
#   include_directories("${PROJECT_SOURCE_DIR}/lib/bullet/src")
#endif(USE_SYSTEM_BULLET)

修复了它。