[cmake-developers] Supported targets with the ninja generator ?

Nicolas Desprès nicolas.despres at gmail.com
Thu Apr 5 16:43:28 EDT 2012


2012/4/5 Alexander Neundorf <neundorf at kde.org>:
> On Thursday 05 April 2012, Nicolas Desprès wrote:
>> 2012/4/4 Alexander Neundorf <neundorf at kde.org>:
>> > On Wednesday 04 April 2012, Nicolas Desprès wrote:
>> >> On Tue, Apr 3, 2012 at 10:03 PM, Alexander Neundorf <neundorf at kde.org>
>> >
>> > wrote:
>> >> > On Tuesday 03 April 2012, Alexander Neundorf wrote:
>> >> >> On Tuesday 03 April 2012, Alexander Neundorf wrote:
>> >> >> > Hi,
>> >> >> >
>> >> >> > which "additional" targets are supported with the ninja generator ?
>> >> >> >
>> >> >> > The "help" target does not seem to be supported. This would be
>> >> >> > nice.
>> >> >> >
>> >> >> > With Makefiles, for every target foo there is also a target
>> >> >> > foo/fast. This seems to be not supported currently. Is it planned
>> >> >> > ?
>> >>
>> >> If I remember well the /fast version is to skip dependency checking
>> >> right? If we consider that Ninja is fast enough do we need them?
>> >
>> > I thought the same, but I wanted to raise the question nevertheless.
>> >
>> >> >> > With Makefiles, there are targets to
>> >> >> > - compile a single source file foo.c -> foo.o
>> >> >> > - preprocess a single source file foo.c -> foo.i
>> >> >> > - assemble (actually compile but do not assemble) a single source
>> >> >> > file
>> >> >> >
>> >> >> >          foo.c -> foo.s
>> >> >> >
>> >> >> > Those also seem not to be supported currently.
>> >> >> > Is this planned ? It would be nice.
>> >>
>> >> I think both could be implemented but there is no plan.
>> >>
>> >> ninja foo.o should already work I think.
>> >
>> > Doesn't look like it:
>> >
>> > ~/src/CMake/build dir/build-Ninja$ ninja cmake.o
>> > ninja: ERROR: unknown target 'cmake.o', did you mean 'cmake'?
>> > ~/src/CMake/build dir/build-Ninja$ ninja Source/cmake.o
>> > ninja: ERROR: unknown target 'Source/cmake.o'
>> > ~/src/CMake/build dir/build-Ninja$
>>
>> Well we can get the list of all available target (i.e. all output file
>> in the graph) by doing: ninja -t targets all (see the manual for all
>> options supported by the target tool)
>>
>> $ ninja -t targets all | grep cmake.cxx.o
>> Source/CMakeFiles/CMakeLib.dir/cmake.cxx.o: CXX_COMPILER
>> Source/CMakeFiles/ccmake.dir/CursesDialog/ccmake.cxx.o: CXX_COMPILER
>>
>> So you will have to do:
>> $ ninja Source/CMakeFiles/CMakeLib.dir/cmake.cxx.o
>
> Hmm, this may be ok for doing it manually, but not for doing it in the project
> generator in Eclipse. I can't hardcode guessing how the object file will be
> named, it should be one of the targets known to cmake (at least it would be
> nice).
>

Ok. So phony targets have to generated for that purpose.

[...]

-- 
Nicolas Desprès



More information about the cmake-developers mailing list