16.02.2018, 21:32, "Cornelis Bockemühl" <corne...@bockemuehl.ch>: > Thanks - that did the trick! > > And indeed by entering -j4 in the "Tool arguments" field, the build command > changes "magically" into "cmake --build . --target all -- -j4" - with the > "--" to pass the argument further to gmake. > > Actually compile time of my project after a "clean" went down from 23 to 14 > min, thus reduction factor 1.6 with 4 processors: I tend to attribute the > diffference to "almost 4" to the nature of my project where gmake seems not > to see too many opportunities for parallel processing. Maybe it works always > module by module, or whatever. > > Anyway, my question is answered - thanks again!
Note that if you used Ninja generator, it would use all cores by default. > > Regards, > Cornelis > > Am Freitag, den 16.02.2018, 20:25 +0300 schrieb Konstantin Tokarev: >> 16.02.2018, 20:20, "Cornelis Bockemühl" <corne...@bockemuehl.ch>: >>> Thanks for your hints! And you are right: it is still interesting to know >>> how QtCreator is actually invoking and using cmake. >> >> You should go to project settings and change cmake --build arguments there >> >>> This is the beginning of a log that the QtCreator was generating during a >>> build. Actually with two modules where nothing had to be done, but still >>> showing how cmake and gmake are being invoked - and all a bit above my >>> understanding of the two tools: >>> >>> =================================== >>> /usr/bin/cmake -H/Sources/GitLinux/RMT -B/BinariesLinux/RMT/Debug >>> --check-build-system CMakeFiles/Makefile.cmake 0 >>> /usr/bin/cmake -E cmake_progress_start /BinariesLinux/RMT/Debug/CMakeFiles >>> /BinariesLinux/RMT/Debug/CMakeFiles/progress.marks >>> /usr/bin/gmake -f CMakeFiles/Makefile2 all >>> gmake[1]: Entering directory '/BinariesLinux/RMT/Debug' >>> /usr/bin/gmake -f CMakeFiles/FirstModule.dir/build.make >>> CMakeFiles/FirstModule.dir/depend >>> gmake[2]: Entering directory '/BinariesLinux/RMT/Debug' >>> cd /BinariesLinux/RMT/Debug && /usr/bin/cmake -E cmake_depends "Unix >>> Makefiles" /Sources/GitLinux/RMT /Sources/GitLinux/RMT >>> /BinariesLinux/RMT/Debug /BinariesLinux/RMT/Debug >>> /BinariesLinux/RMT/Debug/CMakeFiles/FirstModule.dir/DependInfo.cmake >>> --color= >>> gmake[2]: Leaving directory '/BinariesLinux/RMT/Debug' >>> /usr/bin/gmake -f CMakeFiles/FirstModule.dir/build.make >>> CMakeFiles/FirstModule.dir/build >>> gmake[2]: Entering directory '/BinariesLinux/RMT/Debug' >>> gmake[2]: Nothing to be done for 'CMakeFiles/FirstModule.dir/build'. >>> gmake[2]: Leaving directory '/BinariesLinux/RMT/Debug' >>> [ 3%] Built target FirstModule >>> /usr/bin/gmake -f CMakeFiles/SecondModule.dir/build.make >>> CMakeFiles/SecondModule.dir/depend >>> gmake[2]: Entering directory '/BinariesLinux/RMT/Debug' >>> cd /BinariesLinux/RMT/Debug && /usr/bin/cmake -E cmake_depends "Unix >>> Makefiles" /Sources/GitLinux/RMT /Sources/GitLinux/RMT >>> /BinariesLinux/RMT/Debug /BinariesLinux/RMT/Debug >>> /BinariesLinux/RMT/Debug/CMakeFiles/SecondModule.dir/DependInfo.cmake >>> --color= >>> gmake[2]: Leaving directory '/BinariesLinux/RMT/Debug' >>> /usr/bin/gmake -f CMakeFiles/SecondModule.dir/build.make >>> CMakeFiles/SecondModule.dir/build >>> gmake[2]: Entering directory '/BinariesLinux/RMT/Debug' >>> gmake[2]: Nothing to be done for 'CMakeFiles/SecondModule.dir/build'. >>> gmake[2]: Leaving directory '/BinariesLinux/RMT/Debug' >>> [ 6%] Built target SecondModule >>> ... >>> =========================================== >>> >>> For example I do not really understand all the parameters that are passed >>> to cmake - and I do not find them in the documentation either (like -H, -B >>> or --check-build-system... >>> >>> Regards, >>> Cornelis >>> >>> Am Freitag, den 16.02.2018, 08:59 -0800 schrieb Michael Ellery: >>>> I don’t know anything about QTCreator, but the question really boils down >>>> to how to get your IDE to pass extra args to the build tool - it’s not >>>> really a cmake issue except to the extent that CMake can be used to invoke >>>> the build step (after it has been used to generate the build). It sounds >>>> like QT uses “cmake --build” to do the build phase (which makes sense), so >>>> you just need to add your “-j N” argument to the build step invocation. If >>>> you believe this: https://doc.qt.io/qtcreator/creator-build-settings.html, >>>> then it sounds like maybe “Tool Arguments” is what you want (see “CMake >>>> Build Steps”) ? BTW, the way I do this myself (since I don’t use an IDE) >>>> is something like “cmake --build . -- -j 8” where the double dash stops >>>> shell argument processing and effectively passes everything else on to the >>>> build tool that cmake ultimately invokes (e.g. make or ninja or msbuild, >>>> etc.) HTH, Mike On Feb 16, 2018, at 8:31 AM, Cornelis Bockemühl >>>> <corne...@bockemuehl.ch> wrote: Hello, Somehow I seem to miss some crucial >>>> point regarding setup for parallel build with CMake, so I would be happy >>>> if somebody can push me the last few millimeters to hit my target! My >>>> configuration is on OpenSuse Linux (Leap - 64-bit), working with QtCreator >>>> and CMake, using the "make" configuration. I learned from "the internet" >>>> that actually I would have to pass a -jN option to make or gmake (with N >>>> being the max number of processors I want to use). Or even more elegant: >>>> go for a -lN option to somehow balance the load. Sounds good! But what I >>>> do not see is how to pass these nice options to make through CMake and >>>> QtCreator! One attempt was to specify CMAKE_CXX_FLAGS=-j4 or the like >>>> because some comment "in the internet" seemed to suggest this. However, >>>> like I already feared: this passes the option to the compiler call - and >>>> that is the wrong address for it, so I get an error message. Basically I >>>> think that it is 99% a CMake question and maximum 1% a QtCreator problem, >>>> so I am asking this question here. And now I am stuck - if not some >>>> friendly and knowing person can help me out of this! Thanks for any >>>> helpful hint! Cornelis -- Regards, Konstantin -- 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: https://cmake.org/mailman/listinfo/cmake