Replies: 6 comments
-
It is a hairy issue. Bullet consist of several libraries, such as BulletCollision, BulletDynamics and LinearMath. Ideally there would be no 'bullet' in the package managers, but directly the individual libraries. Unfortunately, LinearMath is a really bad name, but in the next major revision of Bullet it will be called Bullet3Common, but migrating to a new version of Bullet is hard. I prefer local Bullet installations myself, and not depend on system libraries/system install, so others contributed the system installation. /usr/local/include/Bullet3Common But then there is the BulletExampleBrowser, which includes all the examples, and most of the example also can be installed as standalone binries. Those examples should be 'installed' as well, so users can try out Bullet and see what it does. It looks like most package managers don't install examples? |
Beta Was this translation helpful? Give feedback.
-
The LinearMath name or the headers? |
Beta Was this translation helpful? Give feedback.
-
The name (updated previous comment to clarify it). Bullet is not supposed to be single library under the 'bullet' folder, although packagers made it this way. It doesn't make sense to change the Bullet headers, because of some decision of packagers, deciding that the various Bullet libraries should be mixed into one. I think it is better to distribute them as individual libraries, possibly grouped through dependencies. So if you would do sudo apt-get install Bullet3Dynamics you get also Bullet3Collision and Bullet3Common. Would that solve your issue? It is not clear when I manage to move to Bullet 3 yet (replacing LinearMath by Bullet3Common etc). |
Beta Was this translation helpful? Give feedback.
-
Only if the install were to install all of them DIRECTLY under /usr/local/include instead of /usr/local/include/bullet. The problem here is makefile installing on a location and the headers looking into a different one. |
Beta Was this translation helpful? Give feedback.
-
Yes, that is what I mentioned indeed, right? I'll repeat it, because you may have missed it: /usr/local/include/Bullet3Common |
Beta Was this translation helpful? Give feedback.
-
That's alright too. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Installing from source on linux, the headers are installed on /usr/local/include/bullet.
However, headers don't include other headers using bullet/*, they include other headers assuming the path being provided is /usr/local/include/bullet.
For example: on BulletCollision/CollisionDispatch/btCollisionWorld.h, it includes LinearMath/btVector3.h.
But the makefile didn't put the LinearMath directory under /usr/local/include, it put it under /usr/local/include/bullet, so it can't find it.
So what people do is to use -I/usr/local/include/bullet to make it use that directory to look for stuff.
But the thing is, if I were to install bullet into another path, such as /usr/include, which is what a packager manager does, my makefile wouldn't work.
So, what I propose is to make the headers reference instead of LinearMath/btVector3.h, bullet/LinearMath/btVector3.h.
Now if the headers are installed anywhere on the system where its a valid path for looking for headers, the makefile works, no need to add a flag just to compensate for the wrong path on the header.
Beta Was this translation helpful? Give feedback.
All reactions