[CMake] Help for a cmake newbie

Michael Surette mjsurette at gmail.com
Sun Jan 31 12:47:03 EST 2016


On 30/01/16 09:42 PM, vadtec wrote:
 > Let me start by saying I consider my self a cmake newbie. I've made
 > simple makefiles and simple cmake files, but anything more complicated
 > has to this point eluded me. Not for a lack of trying, searching,
 > researching, trail, and a great deal of error: I simply have not been
 > able to achieve the things I'm after. If the sort of questions I'm
 > asking have been answered elsewhere (as I'm sure they have), I apologize
 > for asking them again. That being said, I realize I'm going to be asking
 > some questions that my Google-Fu has failed me in answering. Forgive me
 > my failings, but I'm at my witts end.
 >
 >
 > I have a project that I'm building on Linux that has a server component
 > and a client component that also needs to run on Windows. It uses
 > several libraries that I want to version lock so I run into fewer issues
 > with cross compiling and feature creep.
 >
 > The project is laid out like this:
 >
 > /home
 >      mydir/
 >          project/
 >              build/
 >              bundle/
 >              deps/
 >                  curl-7.43.0/
 >                  libiconv-1.14/
 >                  libpng-1.6.18/
 >                  libssh2-1.6.0/
 >                  openssl-1.0.2d/
 >                  sqlite/
 >                  tinycthread/
 >                  zlib-1.2.8/
 >              include/
 >                  client/
 >                      client.h
 >                  common/
 >                      config.h
 >                      common_funcs.h
 >                  server/
 >                      server.h
 >              src/
 >                  client/
 >                      client.c
 >                  common/
 >                      common_funcs.c
 >                  server/
 >                      server.c
 >
 > curl, libiconv, libpng, libssh2, and zlib are the libs I want to build
 > and use both on Linux and Windows. I know all of those are available on
 > Linux and I could use the system installed versions, but I want to use
 > the same vesions on Windows as well. The server is only built on Linux,
 > while the client needs to be built for Linux and Windows. All the libs,
 > headers, etc go into the build directory, and the final "make install"
 > puts everything into the bundle directory, so it can be packaged for
 > distribution.
...
 > Any help is greatly appreciated.
 >
 > ------------------------------------------------------------------------
 > Vadtec
 > vadtec at vadtec.net
 >
 >
Check out how it's done with FLTK at fltk.org.

We put each dependency in its own folder with its own CMakeLists.txt 
then do an add_subdirectory for each. The add_subdirectory calls are 
dependent on whether that particular library is available as a system 
library and if so which you want to build with.

I'm sure you could adapt this to your purpose.

Mike




More information about the CMake mailing list