From: Matthew C. <mat...@va...> - 2010-04-12 15:22:00
|
Hi Ari, The answer to your question really depends on what build system you're using. If you're starting a new set of C/C++ projects I recommend boost-build as a build system because it makes integrating dependencies relatively easy (especially if they are also boost-build projects). It will enable you to make your build system cross platform with a minimum of fuss (which means you don't require a specific IDE or MinGW). Bjam also makes it extremely easy to build subsets of your source tree which is something that no other build system I've used comes close to (without a lot of explicit setup, which kind of defeats the purpose). Say you only want to build and run tests for MSData; you can do that with this command: quickbuild.sh pwiz/data/msdata Or you just want to run the MSDataFile unit test: quickbuild.sh pwiz/data/msdata//MSDataFileTest If you decide to go this route, you can use the Tabb Lab Bumbershoot applications (http://fenchurch.mc.vanderbilt.edu:37280/viewLog.html?buildId=147&tab=artifacts&buildTypeId=bt2&guest=1) as an example of how to depend on pwiz (we extract it from its source tarball and build the parts we need). Building from dependency sources gives you flexibility on linkage (shared/static), address-model (32/64 bit), architecture (x86/PPC), variant (debug/release), and stdlib (MSVC, GLIBC, etc.). To achieve this capability using prebuilt binaries (.dll/.lib or .so) you either have a whole bunch of binaries to support the builds you want and have your build system choose between them, or you limit your build system to only using a small subset of the possible builds of your dependencies. An alternative to using boost-build or prebuilt-binaries is to reproduce the pwiz build system in a different build system. This is what Brian Pratt did for TPP, back when pwiz quickbuild wasn't as rock-solid as it is today. ;) I believe he also now keeps a copy of the source code in their tree: http://sashimi.svn.sourceforge.net/viewvc/sashimi/trunk/trans_proteomic_pipeline/extern/ProteoWizard/pwiz/ I believe the "at least a minute or two" process you are describing is the first, clean build where it extracts the Boost source and/or it's the default build creating binary and source tarballs for deployment. You can disable the latter by building just your code and its dependencies: quickbuild.sh <your_directory_in_the_pwiz_root> Unless your system has the same boost version that pwiz uses, it may be problematic to get pwiz to use a system-wide boost (and of course that's a much rarer thing to find on Windows systems). Pwiz is also set up to make a subset tarball out of all the boost dependencies it detects, which cuts the 30mb boost tarball down to 2mb for pwiz. And of course, once you get to the point where you want to deploy your code you may find that the automatic tarball creation makes your life easier. :) Hope this helps, -Matt On 4/11/2010 3:28 AM, Ari Frank wrote: > > Hi, > > First, thank you for making the pwiz code available for general use; > it looks like you guys have put a lot of thought and effort into this > project and it is very nicely done . > > I've been working in the area of algorithmic proteomics for a few > years now (as part of the Pevzner lab at UCSD). I'm starting to > develop some new MS/MS analysis tools and would very much like to use > your code in my programs (e.g., I would like to be able to include > certain classes like "../pwiz_root/pwiz/data/msdata/MSDataFile.hpp" > and use that class with my code). I'm having difficulties setting up > an environment where I can do this easily, and I was hoping maybe you > could help out. > > Right now, what I have setup is a bit cumbersome. I'm working with > eclipse on linux (Ubuntu). The only way I got something to work was by > adding a directory under pwiz_root and telling the main jamfile to > compile that directory too. The problem is, that every time I build my > project, it goes over the whole pwiz project and does a bunch of > things with the tar.bz2 files so the whole process takes at least > minute or two. > > I was wondering if there is a simple way for me to link pwiz libraries > and not have to have my code under pwiz_root or have use the pwiz > jamfile. Basically what I would like to be able to get to is a way > where I can use pwiz in a similar way to the way I use boost in my > projects. I'm really not an expert in developing large software > projects (especially in a Unix environment), but I hope that for you > guys this is a simple thing to do (and easy for you to explain to me…) > > Many thanks, > > Ari > |