Could you describe your approach in more detail ? If I understand it correctly, it requires quite a bit of manual maintenance...<br><br>I&#39;ve tried the following so far:<br>1) Created a &quot;ut&quot; target on top and for every unit test did add_dependency(ut that_ut). That works fine in parallel, but builds *all* the tests - not enough granularity.<br>2) Created a &quot;ut&quot; target at the top (with no dependencies) and set the global property ALLOW_DUPLICATE_CUSTOM_TARGETS and USE_SUBDIRS to true. In every directory with tests in it, I created a &quot;ut&quot; target that depends on building the test. That works exactly how I want it to, but breaks when building in parallel (race conditions in writing to files that are common dependencies). This approach would require zero maintenance, so it would be my preferred one, but I don&#39;t know if the parallelism issue can be fixed. Ideas ?<br>3) I managed to force ctest to build the tests in parallel, but when calling ctest with -j (multiple tests building in parallel), the same issues cropped up as in 2) and I prefer 2) anyway.<br><br>Hints on fixing 2) would be very much appreciated. Time is running out... ;)<br><br>Thanks,<br>WK<br><br>----- Reply message -----<br>From: &quot;Alan W. Irwin&quot; &lt;irwin@beluga.phys.uvic.ca&gt;<br>To: &quot;Matthew Woehlke&quot; &lt;matthew.woehlke@kitware.com&gt;<br>Cc: &lt;cmake@cmake.org&gt;<br>Subject: [CMake] Building all tests in parallel (whole subtrees)<br>Date: Thu, Jan 24, 2013 05:52<br><br><br>On 2013-01-23 19:07-0500 Matthew Woehlke wrote:<br><br>&gt; On 2013-01-23 18:08, Wojciech Knapik wrote:<br>&gt;&gt; I set up targets that build the unit test executables and<br>&gt;&gt; marked them with EXCLUDE_FROM_ALL, because I don&#39;t want to tie building<br>&gt;&gt; them to building the application code. Now I need a way to build and run<br>&gt;&gt; these tests en masse, since there are too many to do it one at a time.<br>&gt;&gt; <br>&gt;&gt; Ideally I&#39;d like to have a make target, that I could call to build all<br>&gt;&gt; unit tests in the current directory and below *in*parallel*.<br><br>@Wojciech: <br>I do exactly what you describe for a number of build systems I am<br>maintaining, I create a whole system of custom test targets with all<br>the required file and target dependencies between them (and other<br>standard targets such as libraries and executables) with the<br>combination of add_custom_command/add_custom_target/add_dependencies<br>commands. &nbsp;I also maintain a hierarchy of target dependencies using<br>the combination of add_custom_target/add_dependencies so that there is<br>one overall target (which I happen to call test_everything) which<br>depends on every other test target.<br><br>&gt; I&#39;m not sure if this is possible (or at least feasible)...<br><br>@Matthew and Wojciech:<br><br>Whether ordinary or custom targets can be built in parallel depends on<br>the back-end being used. &nbsp;For the &quot;Unix Makefiles&quot; generator it is<br>simple;<br><br>make -j8 test_everything<br><br>gets the job done. &nbsp;Other generators I have used with parallel-build<br>capability are &quot;MSYS Makefiles&quot; and &quot;MinGW Makefiles&quot; on Windows<br>(actually Wine in my case which I use as a convenient and free in both<br>senses test Windows platform under Linux). I haven&#39;t tried the &quot;&quot;NMake<br>Makefiles JOM&quot; generator yet, but I plan to do so. The jom backend<br>(unlike nmake) does have parallel build capability (see<br>http://qt-project.org/wiki/jom project). &nbsp;The jom application is part<br>of the ordinary Qt install for Windows (or Wine) so I plan to give the parallel<br>build capabilities of jom a try in the future.<br><br>&gt; different generators may or may not have the concept of targets in directories. &nbsp;I think <br>you would need to create a uniquely named target per directory.<br><br>@Matthew: That should not be a concern. &nbsp;Targets are a global concept<br>in CMake so are independent of which subdirectory they are created in.<br>So the test_everything target mentioned above runs test targets that have<br>been created in different subdirectories without issues.<br><br>Alan<br>__________________________<br>Alan W. Irwin<br><br>Astronomical research affiliation with Department of Physics and Astronomy,<br>University of Victoria (astrowww.phys.uvic.ca).<br><br>Programming affiliations with the FreeEOS equation-of-state<br>implementation for stellar interiors (freeeos.sf.net); the Time<br>Ephemerides project (timeephem.sf.net); PLplot scientific plotting<br>software package (plplot.sf.net); the libLASi project<br>(unifont.org/lasi); the Loads of Linux Links project (loll.sf.net);<br>and the Linux Brochure Project (lbproject.sf.net).<br>__________________________<br><br>Linux-powered Science<br>__________________________<br>--<br><br>Powered by www.kitware.com<br><br>Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html<br><br>Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ<br><br>Follow this link to subscribe/unsubscribe:<br>http://www.cmake.org/mailman/listinfo/cmake<br>