Dear All,

After the suggestion from Bill Hoffman, I played with CDash for a while now. I 
was able to create a ctest script that would build the packages/subdirectories 
of my project one by one, and then upload the build/test results to a CDash 
server. With the results being quite user friendly on the webpage.

However this is unfortunately terribly slow. The project that I'm trying to 
build as an exercise has ~120 packages/subdirectories. Each with 1-20 source 
files. As you can imagine there's a huge difference between calling "make" just 
once to let all targets build at the same time, or to call it 120 times for the 
separate packages. The CPU utilisation in the latter case is less than 50% 
overall. (With the "Unix Makefiles" generator it's around 30%, and with Ninja 
around 50%. On an machine with 8 threads.)

But I noticed that when I build the project with CTEST_USE_LAUNCHERS enabled, 
even in a fully parallel build the output generated by CTest/CMake associates 
the build warnings/errors with the labels that I gave to the targets in my 
build. (Which correspond to the names of the packages.)

Unfortunately however I'm unable to upload the results from this single build 
step to CDash such that the warnings/errors belonging to the different 
sub-projects would show up under those sub-projects. :-( I tried this with the 
following code:

# Execute the project build:
ctest_build( BUILD ${CTEST_BINARY_DIRECTORY} APPEND )

# The subprojects to build/test:
set( _subprojects @CTEST_PROJECT_SUBPROJECTS@ )
foreach( _subproject ${_subprojects} )

   # Upload the build results for this package:
   set_property( GLOBAL PROPERTY SubProject Package_${_subproject} )
   set_property( GLOBAL PROPERTY Label Package_${_subproject} )
   set( CTEST_BUILD_TARGET Package_${_subproject} )
   ctest_submit( PARTS Build )

   # Execute the test(s) of the subproject:
   ctest_test( BUILD ${CTEST_BINARY_DIRECTORY}
      INCLUDE_LABEL Package_${_subproject} APPEND )
   ctest_submit( PARTS Test )

endforeach()

But this doesn't do what I was hoping for. (No filtering is made from the one 
big XML to just pick out the warnings/errors belonging to the currently 
processed package.)

Now, the current situation is already a lot better than I was in a few days 
ago. As the XML files generated by ctest in this case seem like a very good 
starting point to process using our nightly build system to present the 
warnings/errors on our privately produced webpages. But I wonder if it could be 
possible to also teach CTest/CDash how to do this sort of thing out of the 
box...

Cheers,
            Attila
-- 

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

Reply via email to