Comment Hands down, Simplicity of dependencies (Score 1) 279
Simplicity of dependencies are the only way I survive C++ development. For instance I was just playing with OgreSDK, and it depended on my having a specific version of CMake installed in a specific way, in a specific directory. That's fine, oddly enough I can live with that. But how long before I combine Ogre with something that requires something different about the CMake installation?
So, for instance I like the Crypto++ library because I can cheat and just slam it into my multi-platform codebase without worrying about keeping it separate. And seeing that over 50% of my code needs to run on 4 platforms I have become very sensitive to this kind of crap. I consider a platform specific #ifdef's to be a personal failure (even though they are lightly sprinkled through my code).
I somewhat like boost with its mostly header only stuff but that is not without some consequences. POCO is cool but I find that having a single codebase that is multiplatform is an IDE configuration nightmare.
So what is my favourite solution? I would say that libraries have many virtues but that in the end any fights with them can be horrific. So I am going to go with my present favourite for multiplatform dependency goodness; and that is Cocos2d-x; it isn't perfect but the nice combination of it being a library and part of your code base results in some of the fewest compilation problems that I have ever had.
I would say that its primary cost is when you go to upgrade to a much newer version of the library. Basically you have a fight on your hands. But that fight is once in a blue moon. Whereas I find some other libraries are a non-stop fight, sometimes with no resolution.
So, for instance I like the Crypto++ library because I can cheat and just slam it into my multi-platform codebase without worrying about keeping it separate. And seeing that over 50% of my code needs to run on 4 platforms I have become very sensitive to this kind of crap. I consider a platform specific #ifdef's to be a personal failure (even though they are lightly sprinkled through my code).
I somewhat like boost with its mostly header only stuff but that is not without some consequences. POCO is cool but I find that having a single codebase that is multiplatform is an IDE configuration nightmare.
So what is my favourite solution? I would say that libraries have many virtues but that in the end any fights with them can be horrific. So I am going to go with my present favourite for multiplatform dependency goodness; and that is Cocos2d-x; it isn't perfect but the nice combination of it being a library and part of your code base results in some of the fewest compilation problems that I have ever had.
I would say that its primary cost is when you go to upgrade to a much newer version of the library. Basically you have a fight on your hands. But that fight is once in a blue moon. Whereas I find some other libraries are a non-stop fight, sometimes with no resolution.