On Tuesday, September 23, 2014 09:58:58 Stephen Kelly wrote:
> Hi (especially Alex),
> 
> I noticed that the automoc target is run each time, even for a trivial
> project:
> 
>  cmake_minimum_required(VERSION 2.8)
>  project(automoctest)
> 
>  set(CMAKE_AUTOMOC ON)
> 
>  find_package(Qt5Widgets REQUIRED)
> 
>  add_executable(main main.cpp)
>  target_link_libraries(main Qt5::Widgets)
> 
> Each time I run make I get
> 
>  [ 33%] Automatic moc for target main
>  /path/to/cmake -E cmake_autogen /path/to/build/CMakeFiles/main_automoc.dir/
> "
> 
> I checked CMake 2.8.7 and it executes the target each time too.
> 
> In the implementation, makefile->AddUtilityCommand is called with 'true' to
> set the excludeFromAll parameter.
> 
> I don't see why the target is executed each time, but is it that way by
> design?

iirc, yes.
The moc files have to be generated before any of the source files is compiled, 
so automoc is in a target the actual target depends on.
IIRC it is exclude_from_all so that it is only built when the actual target is 
built.
Do you think it should only rerun if any of the source files has changed ?
There was some problem with this.
The headers are usually not part of the listed source files. I would have to 
check to find out the details again.

Alex

-- 

Powered by www.kitware.com

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

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

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

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers

Reply via email to