[CMake] directory traverse guidance
Andreas Pakulat
apaku at gmx.de
Tue Jan 25 14:17:24 EST 2011
On 25.01.11 19:09:23, luxInteg wrote:
> On Tuesday 25 January 2011 07:53:24 Andreas Pakulat wrote:
> > On 25.01.11 02:57:27, luxInteg wrote:
> > > Greetings
> > >
> > > I am learning cmake
> > >
> > > consider my project with two directories dir1 and dir2
> > >
> > > if I want to:-
> > > move to dir1 and add a library libA in dir1
> > > move to dir2 and add a library libB in dir2
> > > move back to dir1 and add a test testA in dir1
> > > move back to dir2 and add a test testB to dir2
> > >
> > >
> > > (the moving back is because of the interdependencies of the tests with
> > > the libraries i.e. testA reaquires libB etc))
> > >
> > > how do I do this?
> >
> > You don't. All you need is 2 CMakeLists.txt, one in dir1 with libA and
> > testA targets and the other in dir2 with libB and testB targets. CMake
> > as a declarative language (to a certain extent) does not depend on the
> > order in which you declare targets and use them.
>
>
> Before I made my posting, I tried a setup (as you suggested) but with more
> than two directories -lets call this N
>
> my extended setup had dir1 ......dirN
> each with
> add_library(someLIB ${sourceFiles(1...N)})
> add_depedencies(someLIB someTEST)
So your library depends on the test? This doesn't look like it makes
much sense. Also cmake will already take care of dependencies via
target_link_libraries.
> then
> add_test(someTEST someFILE(1...N).c )
This is actually not going to do anything useful, add_test expects an
executable or the name of a target created by add_executable.
> Basically I have to build a set of tests after building some static libraries
> and some of these tests require linking to libraries that occur much later
> in the build-scheme. {In other words libA.a might be built and testA (built
> in the same directory as liba.A} but it requires linking not only to libA.a
> but to the 'later-built' libN.a)
As I said, this works just fine if you let cmake handle the
dependencies via add_library+add_executable+add_test.
If you still can't make it work, please try out the attached project and
try to make it break by adding more targets, dependencies or source
files and then post the resulting project.
Andreas
--
Learn to pause -- or nothing worthwhile can catch up to you.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cmdep.tar.gz
Type: application/octet-stream
Size: 672 bytes
Desc: not available
URL: <http://www.cmake.org/pipermail/cmake/attachments/20110125/51e69169/attachment.obj>
More information about the CMake
mailing list