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

时间:2019-06-08 02:09:50

标签: c++ cmake bullet

我正在开发游戏,并试图使用子弹。但是,(似乎)我在链接项目符号库时遇到问题。编辑2:我有my code on 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

这是最后一个错误。 Full Error

2 个答案:

答案 0 :(得分:0)

libbullet-dev需要安装。

sudo apt-get install libbullet-dev

答案 1 :(得分:0)

我的问题是我的一个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)

修复了该问题。