【发布时间】:2016-03-28 15:53:18
【问题描述】:
我只想将 Bullet 库用于两个凸包之间的碰撞检测。我的问题是如何在我的项目中链接库并在 CMakeLists.txt 中指定。
我不太了解如何安装 Bullet 库。我在一个文件夹中克隆了repo,创建了一个构建文件夹,用cmake编译并安装了它。我试图通过添加 CMakeLists.txt 将库链接到我的项目:
find_package( Bullet REQUIRED )
include_directories(${BULLET_INCLUDE_DIR} )
LINK_LIBRARIES(
BulletDynamics BulletCollision
)
当我在我的项目中添加标题时,这也可以正常工作。但是当我使用 Bullet 库的某些功能时,会出现以下编译错误:
/usr/bin/ld: /usr/local/lib/libBulletDynamics.a(btTypedConstraint.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
我试图用谷歌搜索它以解决问题,但我无法解决它(我对 CMake 和这些东西的了解非常基础)。 另外我在某处发现该库应该包含在项目中然后编译,所以我的项目结构是这样的:
/trunk
CMakeLists.txt
Findmy_project.cmake
/bin
/build
/src
/examples
CMakeLists.txt
test.cpp
my_algorithm.cpp
my_algorithm.h
CMakeLists.txt
其中test.cpp 是使用my_algorithm.h 中定义的类的源文件,但我现在不知道如何将Bullet 库链接到项目。
所以我的问题总结如下:我必须如何链接以及在哪里安装 Bullet 库才能在我的 c++ 项目中使用它?
【问题讨论】:
-
Also I found somewhere ...- 这引发了 另一个 问题,这与第一个问题有点相关(关于与 Bullet 库链接的错误)。最好每个问题发布一个问题,这样您就可以为每个问题收集最佳答案。 -
我的问题只是一个,我只是提出了两条我试图遵循的“路径”,我只想使用该库,无论哪种解决方案都适合我。
标签: c++ linux cmake collision-detection bulletphysics