[CMake] directory traverse guidance

Eric Noulard eric.noulard at gmail.com
Tue Jan 25 13:34:13 EST 2011


2011/1/25 luxInteg <lux-integ at btconnect.com>:
> 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)
> then
> add_test(someTEST   someFILE(1...N).c )
> target_link_libraries(someTEST
> libA
> libB
> .....
> libN )
>
> and it failed siting some  'graph'  dependency problem.
>
> 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)

Then "TestA" is ill-named :-]

I suggest you build all your libs and non inter-dependent test first
(in the same "dirX" dir)
then any test requiring several libs should be built
in a separate "tests" dir that comes after all "dirX" dirs.



-- 
Erk
Membre de l'April - « promouvoir et défendre le logiciel libre » -
http://www.april.org


More information about the CMake mailing list