[CMake] Depending on all and custom targets

2009-10-09 Thread jens persson
Hello again,

I have some targets that are not build by default (using
EXCLUDE_FROM_ALL), these are build when a special target called
extras.

Now I want to add a target that builds both all and extras, but cant
seem to get it to work. For discussion I have these rules:

PROJECT (tester)
CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
CMAKE_POLICY (VERSION 2.6)

add_executable(foo
foo.c
)
add_executable(bar
bar.c
)
set_target_properties(bar
PROPERTIES EXCLUDE_FROM_ALL True
)
add_custom_target(extras
DEPENDS bar
)

which builds foo when running make all and bar when make extras

I have tried to simply add:
add_custom_target(complete
DEPENDS extras all
)

which gives the following error:
$ make complete
[100%] Built target bar
[100%] Built target extras
make[3]: *** No rule to make target `extras', needed by
`CMakeFiles/complete'.  Stop.
make[2]: *** [CMakeFiles/complete.dir/all] Error 2
make[1]: *** [CMakeFiles/complete.dir/rule] Error 2
make: *** [complete] Error 2

When removing extras from the DEPENDS line I get:
$ make complete
make[3]: *** No rule to make target `all', needed by
`CMakeFiles/complete'.  Stop.
make[2]: *** [CMakeFiles/complete.dir/all] Error 2
make[1]: *** [CMakeFiles/complete.dir/rule] Error 2
make: *** [complete] Error 2

I get the impression that I have two problems: depending on a
custom_target and depending on all.

Anyone know of a solution?

I'm running cmake version 2.6-patch 2 with make 3.81on a ubuntu 9.04
box  (all installed from ubuntu standard repositories)

Best regards and happy weekend
/jp
-- 
jens persson
j...@persson.cx
Mäster Olofsväg 24
S-224 66 LUND;SWEDEN
___
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Re: [CMake] Depending on all and custom targets

2009-10-09 Thread Eric Noulard
2009/10/9 jens persson j...@persson.cx:

 add_custom_target(extras
        DEPENDS bar
 )

 which builds foo when running make all and bar when make extras

 I have tried to simply add:
 add_custom_target(complete
        DEPENDS extras all
 )

 which gives the following error:

[...]

 I get the impression that I have two problems: depending on a
 custom_target and depending on all.

Dependency from builtin target is currently unsupported.
see:
http://public.kitware.com/Bug/view.php?id=8438

I think dependency from extras should work did you try with
only extras and not all?

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

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] Depending on all and custom targets

2009-10-09 Thread jens persson
2009/10/9 Eric Noulard eric.noul...@gmail.com:
 2009/10/9 jens persson j...@persson.cx:
 I get the impression that I have two problems: depending on a
 custom_target and depending on all.

 Dependency from builtin target is currently unsupported.
 see:
 http://public.kitware.com/Bug/view.php?id=8438

OK, that settled then, I'll create my on taget my_all or something
like that then :-)


 I think dependency from extras should work did you try with
 only extras and not all?

Yes I get the following error:

$ make complete
[100%] Built target bar
[100%] Built target extras
make[3]: *** No rule to make target `extras', needed by
`CMakeFiles/complete'.  Stop.
make[2]: *** [CMakeFiles/complete.dir/all] Error 2
make[1]: *** [CMakeFiles/complete.dir/rule] Error 2
make: *** [complete] Error 2


With this CMakeLists.txt file:

PROJECT (tester)
CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
CMAKE_POLICY (VERSION 2.6)

add_executable(bar
bar.c
)
add_custom_target(extras
DEPENDS bar
)
add_custom_target(complete
DEPENDS extras
)


I've tried to look into the makefiles but could not find the solution.

I have included the verbose output of make at the end of this mail

It seems that the file CMakeFiles/complete.dir/build.make references
the extras target that is defined in CMakeFiles/extras.dir/build.make

Probably a bug. Will report it later.

/jp


$ VERBOSE=1 make complete
/usr/bin/cmake -H/home/sejenpe/tmp/cmake-tester/complete
-B/home/sejenpe/tmp/cmake-tester/complete --check-build-system
CMakeFiles/Makefile.cmake 0
make -f CMakeFiles/Makefile2 complete
make[1]: Entering directory `/home/sejenpe/tmp/cmake-tester/complete'
/usr/bin/cmake -H/home/sejenpe/tmp/cmake-tester/complete
-B/home/sejenpe/tmp/cmake-tester/complete --check-build-system
CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start
/home/sejenpe/tmp/cmake-tester/complete/CMakeFiles 1
make -f CMakeFiles/Makefile2 CMakeFiles/complete.dir/all
make[2]: Entering directory `/home/sejenpe/tmp/cmake-tester/complete'
make -f CMakeFiles/bar.dir/build.make CMakeFiles/bar.dir/depend
make[3]: Entering directory `/home/sejenpe/tmp/cmake-tester/complete'
cd /home/sejenpe/tmp/cmake-tester/complete  /usr/bin/cmake -E
cmake_depends Unix Makefiles /home/sejenpe/tmp/cmake-tester/complete
/home/sejenpe/tmp/cmake-tester/complete
/home/sejenpe/tmp/cmake-tester/complete
/home/sejenpe/tmp/cmake-tester/complete
/home/sejenpe/tmp/cmake-tester/complete/CMakeFiles/bar.dir/DependInfo.cmake
--color=
make[3]: Leaving directory `/home/sejenpe/tmp/cmake-tester/complete'
make -f CMakeFiles/bar.dir/build.make CMakeFiles/bar.dir/build
make[3]: Entering directory `/home/sejenpe/tmp/cmake-tester/complete'
make[3]: Nothing to be done for `CMakeFiles/bar.dir/build'.
make[3]: Leaving directory `/home/sejenpe/tmp/cmake-tester/complete'
/usr/bin/cmake -E cmake_progress_report
/home/sejenpe/tmp/cmake-tester/complete/CMakeFiles  1
[100%] Built target bar
make -f CMakeFiles/extras.dir/build.make CMakeFiles/extras.dir/depend
make[3]: Entering directory `/home/sejenpe/tmp/cmake-tester/complete'
cd /home/sejenpe/tmp/cmake-tester/complete  /usr/bin/cmake -E
cmake_depends Unix Makefiles /home/sejenpe/tmp/cmake-tester/complete
/home/sejenpe/tmp/cmake-tester/complete
/home/sejenpe/tmp/cmake-tester/complete
/home/sejenpe/tmp/cmake-tester/complete
/home/sejenpe/tmp/cmake-tester/complete/CMakeFiles/extras.dir/DependInfo.cmake
--color=
make[3]: Leaving directory `/home/sejenpe/tmp/cmake-tester/complete'
make -f CMakeFiles/extras.dir/build.make CMakeFiles/extras.dir/build
make[3]: Entering directory `/home/sejenpe/tmp/cmake-tester/complete'
make[3]: Nothing to be done for `CMakeFiles/extras.dir/build'.
make[3]: Leaving directory `/home/sejenpe/tmp/cmake-tester/complete'
/usr/bin/cmake -E cmake_progress_report
/home/sejenpe/tmp/cmake-tester/complete/CMakeFiles
[100%] Built target extras
make -f CMakeFiles/complete.dir/build.make CMakeFiles/complete.dir/depend
make[3]: Entering directory `/home/sejenpe/tmp/cmake-tester/complete'
cd /home/sejenpe/tmp/cmake-tester/complete  /usr/bin/cmake -E
cmake_depends Unix Makefiles /home/sejenpe/tmp/cmake-tester/complete
/home/sejenpe/tmp/cmake-tester/complete
/home/sejenpe/tmp/cmake-tester/complete
/home/sejenpe/tmp/cmake-tester/complete
/home/sejenpe/tmp/cmake-tester/complete/CMakeFiles/complete.dir/DependInfo.cmake
--color=
make[3]: Leaving directory `/home/sejenpe/tmp/cmake-tester/complete'
make -f CMakeFiles/complete.dir/build.make CMakeFiles/complete.dir/build
make[3]: Entering directory `/home/sejenpe/tmp/cmake-tester/complete'
make[3]: *** No rule to make target `extras', needed by
`CMakeFiles/complete'.  Stop.
make[3]: Leaving directory `/home/sejenpe/tmp/cmake-tester/complete'
make[2]: *** [CMakeFiles/complete.dir/all] Error 2
make[2]: Leaving directory `/home/sejenpe/tmp/cmake-tester/complete'
make[1]: *** [CMakeFiles/complete.dir/rule] Error 2
make[1]: Leaving directory `/home/sejenpe/tmp/cmake-tester/complete'
make: *** [complete] Error 2

Re: [CMake] Depending on all and custom targets

2009-10-09 Thread Eric Noulard
2009/10/9 jens persson j...@persson.cx:

 I think dependency from extras should work did you try with
 only extras and not all?

 Yes I get the following error:

 $ make complete
 [100%] Built target bar
 [100%] Built target extras
 make[3]: *** No rule to make target `extras', needed by
 `CMakeFiles/complete'.  Stop.
 make[2]: *** [CMakeFiles/complete.dir/all] Error 2
 make[1]: *** [CMakeFiles/complete.dir/rule] Error 2
 make: *** [complete] Error 2


 With this CMakeLists.txt file:

 PROJECT (tester)
 CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
 CMAKE_POLICY (VERSION 2.6)

 add_executable(bar
        bar.c
 )
 add_custom_target(extras
        DEPENDS bar
 )
 add_custom_target(complete
        DEPENDS extras
 )


 I've tried to look into the makefiles but could not find the solution.

Better look in to the documentation first :-)
From
cmake --help-command add_custom_target

Dependencies listed with the DEPENDS argument may reference files and
outputs of custom commands created with ADD_CUSTOM_COMMAND.

the DEPENDS argument of ADD_CUSTOM_TARGET is here to cope
with the fact that CMake cannot compute dependency precisely because
it's a CUSTOM target whose input is unknown to CMake.

thus you cannot use that to specify top-level target dependencies.
You should use add_dependencies for that.

Working CMakeLists.txt should looks like:

PROJECT (tester)
CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
CMAKE_POLICY (VERSION 2.6)

add_executable(bar
   bar.c
)
add_custom_target(extras)
add_dependencies(extras bar)
add_custom_target(complete)
add_dependencies(complete extras)

 Probably a bug. Will report it later.

Finally I don't think this is a bug.

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

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] Depending on all and custom targets

2009-10-09 Thread Marcel Loose
Hi  Jens,

It's not a bug. Quoting from the docs for add_custom_target:

  Dependencies listed with the DEPENDS argument may reference files and
  outputs of custom commands created with ADD_CUSTOM_COMMAND.

The problem is that your target 'extras' doesn't create any files. By
saying add_custom_target(complete DEPENDS extras) you're telling CMake
that target 'complete' depends on the _file_ 'extras'.

The correct way to do this is to use add_dependencies:

add_custom_target(complete)
add_dependencies(complete extras)

HTH,
Marcel Loose.


On Fri, 2009-10-09 at 12:47 +0200, jens persson wrote:
 2009/10/9 Eric Noulard eric.noul...@gmail.com:
  2009/10/9 jens persson j...@persson.cx:
  I get the impression that I have two problems: depending on a
  custom_target and depending on all.
 
  Dependency from builtin target is currently unsupported.
  see:
  http://public.kitware.com/Bug/view.php?id=8438
 
 OK, that settled then, I'll create my on taget my_all or something
 like that then :-)
 
 
  I think dependency from extras should work did you try with
  only extras and not all?
 
 Yes I get the following error:
 
 $ make complete
 [100%] Built target bar
 [100%] Built target extras
 make[3]: *** No rule to make target `extras', needed by
 `CMakeFiles/complete'.  Stop.
 make[2]: *** [CMakeFiles/complete.dir/all] Error 2
 make[1]: *** [CMakeFiles/complete.dir/rule] Error 2
 make: *** [complete] Error 2
 
 
 With this CMakeLists.txt file:
 
 PROJECT (tester)
 CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
 CMAKE_POLICY (VERSION 2.6)
 
 add_executable(bar
 bar.c
 )
 add_custom_target(extras
 DEPENDS bar
 )
 add_custom_target(complete
 DEPENDS extras
 )
 
 
 I've tried to look into the makefiles but could not find the solution.
 
 I have included the verbose output of make at the end of this mail
 
 It seems that the file CMakeFiles/complete.dir/build.make references
 the extras target that is defined in CMakeFiles/extras.dir/build.make
 
 Probably a bug. Will report it later.
 
 /jp
 
 
 $ VERBOSE=1 make complete
 /usr/bin/cmake -H/home/sejenpe/tmp/cmake-tester/complete
 -B/home/sejenpe/tmp/cmake-tester/complete --check-build-system
 CMakeFiles/Makefile.cmake 0
 make -f CMakeFiles/Makefile2 complete
 make[1]: Entering directory `/home/sejenpe/tmp/cmake-tester/complete'
 /usr/bin/cmake -H/home/sejenpe/tmp/cmake-tester/complete
 -B/home/sejenpe/tmp/cmake-tester/complete --check-build-system
 CMakeFiles/Makefile.cmake 0
 /usr/bin/cmake -E cmake_progress_start
 /home/sejenpe/tmp/cmake-tester/complete/CMakeFiles 1
 make -f CMakeFiles/Makefile2 CMakeFiles/complete.dir/all
 make[2]: Entering directory `/home/sejenpe/tmp/cmake-tester/complete'
 make -f CMakeFiles/bar.dir/build.make CMakeFiles/bar.dir/depend
 make[3]: Entering directory `/home/sejenpe/tmp/cmake-tester/complete'
 cd /home/sejenpe/tmp/cmake-tester/complete  /usr/bin/cmake -E
 cmake_depends Unix Makefiles /home/sejenpe/tmp/cmake-tester/complete
 /home/sejenpe/tmp/cmake-tester/complete
 /home/sejenpe/tmp/cmake-tester/complete
 /home/sejenpe/tmp/cmake-tester/complete
 /home/sejenpe/tmp/cmake-tester/complete/CMakeFiles/bar.dir/DependInfo.cmake
 --color=
 make[3]: Leaving directory `/home/sejenpe/tmp/cmake-tester/complete'
 make -f CMakeFiles/bar.dir/build.make CMakeFiles/bar.dir/build
 make[3]: Entering directory `/home/sejenpe/tmp/cmake-tester/complete'
 make[3]: Nothing to be done for `CMakeFiles/bar.dir/build'.
 make[3]: Leaving directory `/home/sejenpe/tmp/cmake-tester/complete'
 /usr/bin/cmake -E cmake_progress_report
 /home/sejenpe/tmp/cmake-tester/complete/CMakeFiles  1
 [100%] Built target bar
 make -f CMakeFiles/extras.dir/build.make CMakeFiles/extras.dir/depend
 make[3]: Entering directory `/home/sejenpe/tmp/cmake-tester/complete'
 cd /home/sejenpe/tmp/cmake-tester/complete  /usr/bin/cmake -E
 cmake_depends Unix Makefiles /home/sejenpe/tmp/cmake-tester/complete
 /home/sejenpe/tmp/cmake-tester/complete
 /home/sejenpe/tmp/cmake-tester/complete
 /home/sejenpe/tmp/cmake-tester/complete
 /home/sejenpe/tmp/cmake-tester/complete/CMakeFiles/extras.dir/DependInfo.cmake
 --color=
 make[3]: Leaving directory `/home/sejenpe/tmp/cmake-tester/complete'
 make -f CMakeFiles/extras.dir/build.make CMakeFiles/extras.dir/build
 make[3]: Entering directory `/home/sejenpe/tmp/cmake-tester/complete'
 make[3]: Nothing to be done for `CMakeFiles/extras.dir/build'.
 make[3]: Leaving directory `/home/sejenpe/tmp/cmake-tester/complete'
 /usr/bin/cmake -E cmake_progress_report
 /home/sejenpe/tmp/cmake-tester/complete/CMakeFiles
 [100%] Built target extras
 make -f CMakeFiles/complete.dir/build.make CMakeFiles/complete.dir/depend
 make[3]: Entering directory `/home/sejenpe/tmp/cmake-tester/complete'
 cd /home/sejenpe/tmp/cmake-tester/complete  /usr/bin/cmake -E
 cmake_depends Unix Makefiles /home/sejenpe/tmp/cmake-tester/complete
 /home/sejenpe/tmp/cmake-tester/complete
 /home/sejenpe/tmp/cmake-tester/complete
 /home/sejenpe/tmp/cmake-tester/complete