View Issue Details Jump to Notes ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0011957CMakeCMakepublic2011-03-10 06:172011-09-05 11:37
ReporterA. Saratow 
Assigned ToClinton Stimpson 
PrioritylowSeverityminorReproducibilityalways
StatusclosedResolutionfixed 
PlatformWIN32OSXPOS Version
Product VersionCMake 2.8.4 
Target VersionFixed in Version 
Summary0011957: qt4_wrap_cpp command slows down configuration
DescriptionUsage of the qt4_wrap_cpp command may slow down the configuration process on Win32 systems significantly if there are many options to be written to MOC parameter files (e.g. many include paths or defines, caused by inclusion of large frameworks like DCMTK or VTK).

The reason is that for WIN32 systems each parameter is appended to a parameter file using a FILE(APPEND "...\n" ) call, which is probably not an optimal solution. See QT4_CREATE_MOC_COMMAND macro in Qt4Macros.cmake:110 - Qt4Macros.cmake:113.

Following change seems to significantly improve the performance of CMake configuration runs:

      SET (_moc_parameters_file ${outfile}_parameters)
      SET (_moc_parameters ${moc_flags} ${moc_options} -o "${outfile}" "${infile}")
< FILE (REMOVE ${_moc_parameters_file})
< FOREACH(arg ${_moc_parameters})
< FILE (APPEND ${_moc_parameters_file} "${arg}\n")
< ENDFOREACH(arg)
---
> STRING (REPLACE ";" "\n" _moc_parameters "${_moc_parameters}")
> FILE (WRITE ${_moc_parameters_file} "${_moc_parameters}")
      ADD_CUSTOM_COMMAND(OUTPUT ${outfile}
                         COMMAND ${QT_MOC_EXECUTABLE} @${_moc_outfile_name}_parameters
                         DEPENDS ${infile}
                         ${_moc_working_dir}
                         VERBATIM)
Steps To ReproduceThe easiest way to reproduce this problem would be to fetch a large CMake-configured project with many QObject-derived classes, include the VTK framework and try to configure the project.

For small example projects this issue is not really noticeable.
TagsNo tags attached.
Attached Files

 Relationships

  Notes
(0025753)
Clinton Stimpson (developer)
2011-03-10 16:47

Thanks.
http://cmake.org/gitweb?p=cmake.git;a=commit;h=ae587e [^]
(0027337)
David Cole (manager)
2011-09-05 11:37

Closing resolved issues that have not been updated in more than 4 months.

 Issue History
Date Modified Username Field Change
2011-03-10 06:17 A. Saratow New Issue
2011-03-10 07:28 Brad King Assigned To => Clinton Stimpson
2011-03-10 07:28 Brad King Status new => assigned
2011-03-10 16:47 Clinton Stimpson Note Added: 0025753
2011-03-10 16:47 Clinton Stimpson Status assigned => resolved
2011-03-10 16:47 Clinton Stimpson Resolution open => fixed
2011-09-05 11:37 David Cole Status resolved => closed
2011-09-05 11:37 David Cole Note Added: 0027337


Copyright © 2000 - 2018 MantisBT Team