From: James B. <bi...@cs...> - 2006-02-14 19:19:53
|
Andy, > Nice work. The problem with this approach is that as you said, you build > things twice. What you can do is add an IF around every library to > prevent this from happening. I think I would need both, unless I wanted to complicate the binary builds. The old GNUmakefile system would build both, but it wasn't much overhead. From my experience, the mega library is much easier to use externally to teem, because I don't have to figure out the which library depends on what. I just include the single library. I guess I could make the binaries link against libteem instead of individual libraries. Gordon, how much do we need separate libraries? > The second problem is that all the EXPORT stuff needs to be fixed for > the big library. This should not be too hard, but otherwise Windows will > not build. I don't know much about the window's dll, but could the EXPORT be all the same macro (TEEM_EXPORT) instead of AIR_EXPORT, NRRD_EXPORT, ...? Would that work for separate libraries? > I have a plan to add a feature to CMake to facilitate this kind of > consolidating of libraries into a single library, but there are several > things on my list prior to that. Currently the mega lib is optional. I can check it in once I know what the minimum version of CMake is that supports the ADD_SUBDIRECTORY and GET_DIRECTORY_PROPERTY features. Thanks, James > James Bigler wrote: > >> I got a mega library compiled, but it uses some features that aren't >> backward compatible. How backward compatible do we want to be with >> CMake? I have to use two newer functions: >> >> 1. ADD_SUBDIRECTORY instead of SUBDIRS >> 2. GET_DIRECTORY_PROPERTY has a new feature for grabbing variables >> even though the function does exist as of 2.0.6. >> >> I'm using CMake 2.2.3. >> >> It also unfortunately rebuilds all the object files. CMake wants to >> build objects in different directories for different libraries: >> >> for libteem.so >> Building C object CMakeFiles/teem.dir/src/limn/cam.o >> Building C object CMakeFiles/teem.dir/src/limn/methodsLimn.o >> >> for liblimn.so >> Building C object src/limn/CMakeFiles/limn.dir/cam.o >> Building C object src/limn/CMakeFiles/limn.dir/methodsLimn.o >> >> I don't want to use file globbing, because that can cause >> unanticipated results when doing development (grabbing no longer >> updated .o files). Perhaps there is more CMake trickery that can be >> used to let it know to reuse the objects from one library in another. >> >> Thanks, >> James >> >> > > |