[CMake] Re: Re-running automoc all the time after #13494
Jan Kundrát
jkt at flaska.net
Thu Aug 8 03:00:24 EDT 2013
Hi, is there a solution for automoc being re-run every time when the binary
directory is in the include path (see below)?
Cheers,
Jan
On Wednesday, 31 July 2013 11:43:48 CEST, Jan Kundrát wrote:
> Hi folks,
> I am using out-of-tree builds with Trojita [1], a Qt
> application. My cmake version is 2.8.10.2 on Gentoo Linux using
> the default Makefile generator and GNU make.
>
> Some of my .cpp files #include "ui_something.h", which are
> generated by moc. Other files are imported from 3rd party
> projects and directly include moc_*.cpp. In order to make this
> work, my code calls:
>
> include_directories(${CMAKE_CURRENT_BINARY_DIR})
> set(CMAKE_AUTOMOC True)
>
> However, it looks that due to a fix for #13494 [2], moc gets
> re-run whenever I run `make`. The build system is apparently
> smart enough to not re-link everything, but it nonetheless takes
> at least 3.5 seconds of real time when using non-parallel builds
> (and 1.7 seconds when building with -j6, which I sometimes
> cannot use because I have "only" 4GB of RAM on this machine,
> Thinkpad T420s with i5-2520M and an Intel SSD).
>
> I guess what I'm looking for is a way of telling cmake to add
> -I${CMAKE_CURRENT_BINARY_DIR} only when calling the actual
> compiler, not moc. Is that possible? Or shall I do it some other
> way?
>
> I guess that I could probably split the static library I'm
> building into two units, one for the generated files and the
> other for actual sources, and set the include directory only
> when building the second library (via target-specific
> properties). I'm not sure how easy it is to persuade automoc to
> work in such a setup, though.
>
> Another annoyance is that I want to support cmake 2.8.7 as well
> (that's what gets shipped with Ubuntu 12.04 LTS) which does not
> support target-specific includes. My cmake setup is annoyingly
> complicated due to this requirement already, and I'd like to
> keep it in a maintaineable state :). General comments on the
> readability of the existing cmake setup are much appreciated as
> well -- perhaps I'm doing something in a completely wrong way,
> after all.
>
> With kind regards,
> Jan
>
> [1]
> http://quickgit.kde.org/?p=trojita.git&a=blob&h=4ac8397d028bec11e636affc72c2c014e8b8e756&hb=b870be05017674781bc52c48934c9800a6329493&f=CMakeLists.txt
> [2] http://public.kitware.com/Bug/view.php?id=13494
>
--
Trojitá, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/
More information about the CMake
mailing list