I’ve been using and contributing to various open source projects for almost 20 years. I love the fact that we can leverage each other’s work and help other developers save time instead of reinventing the wheel or fighting the same problem a thousand times over. Open source tools and libraries make what I do possible. Whenever I use open source, I like to compile from the source so I can contribute back to the projects – even if only little patches for fixing compilation warnings, clarifying error messages, or adding to documentation. I used to enjoy configuration and build challenges – such as tweaking and compiling my own Linux kernels – but that’s behind me now. I just want things to work.
I’m a solo developer working on a commercial cross-platform Mac OS X/Windows application. This means that I have to be careful how I allocate my development time since I also have research to conduct and a business to run. Part of this is maintaining control of my development “ecosystem”. The more moving pieces there are – tools, 3rd party libs, etc. – the more overhead, and the less time I have for actual development. Keeping it simple means saving myself a lot of time. It also makes it quick and easy to bring short-term contractors on board.
I started to investigate open source tools for processing point clouds for a future version of my software – I want to handle scan data from FARO and Leica scanners. I quickly zeroed in on the Point Cloud Library which is a BSD-licensed library to read, visualize, manipulate, and process point clouds. It looks like exactly what I need and includes a bunch of capabilities I don’t understand in the least, but seem like they might be useful in the future as I learn about it. Most of the capabilities are too advanced for me to contribute much to them directly, but I thought I’d be able to contribute “around the edges”, so I wanted to build it from source.
Point Cloud Library
This article is a blow-by-blow account of the steps I took while trying to build the Point Cloud Library (PCL) on Mac OS X 10.6 starting with the information from PCL’s Compiling from Source page. The first thing I tried to do is build and link PCL with only the mandatory dependencies. After that, I’ll want to look at the optional pieces and build them if I need them.
As I was working through it, I put together notes for myself on what I did in case I had to do it again or have a contractor do it. As with most other things I have on this site, I thought at least one other person might benefit through the power of Google, so I decided to put the notes up here verbatim. Knowing what I know now, I could shorten this dramatically into “Steps to Build PCL on Mac OS X” [even though I haven’t been successful yet], but I decided it might be interesting to show the action-packed sequences of what actually happened…
I hope this is taken in the spirit it’s intended – documentation of some of the problems just getting PCL to configure and build, along with what I hope are some constructive recommendations [at the end of this voluminous tome]. [Warning: I get a little rant-like in the last commentary section – it’s not directed specifically at the PCL, but software development projects in general.]
I have to point out that the PCL guys have been great, answering my initial question quickly, and they’ve been encouraging [so far – hope they still are after this!]. This doesn’t always happen in open source projects, so it’s great to see. They deserve a lot of credit for their work, which is of great value to many developers and companies worldwide. All the developers and supporting companies are super-awesome for making this library available as open source. Very much appreciated!
[If you want to skip the gruesome details – don’t forget they’re action-packed! – I list some bugs and recommendations near the end.]
So… here we go!
Read the remainder of this entry »
Filed in Code | Tagged: C++, CMake, compilation, configuration, Mac OS X, open source, PCL, point cloud, qt, screed, UX