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

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

我正在开发一款游戏,并且正在尝试使用子弹。但是,(似乎)我在 link 项目符号库中遇到了问题。编辑 2:我有 my code on github

这其实是我第一次使用cmake。我搜索了 FindBullet.cmake 文件,可以找到 link 库(${BULLET_LIBRARIES})的变量,但是 linking 变量中的库没有做任何事情。

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

我希望我的代码能够编译,但我却得到了一堆,"undefined refrence to" 然后是它读取的项目符号中的任何函数。 编辑:

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

^这就是我得到的一堆

collect2: error: ld returned 1 exit status

这是最后一个错误。 Full Error

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)

已修复。