Hi, Raymond, J Decker, Andrew, Chuck, Thanks a lot for your generous help, i have found it was dependencies missing of my project, for i have not found my project was built in parallel.
BTW, i have used env var "MAKEFLAGS=-j" to make in parallel, is there any way i can set "make -j" option in CMake file? For i use Qt Creator as IDE, and the CMake compile system is provided for other R&D teams, so i want to make the CMake compile system as simply and automatically as i can. Could you please give me some advice? Thanks again, Chao Chaos Zhang wrote > Hi, Chuck, > > Thanks for your generous help. > > Actually there is no make -j option in the already exist make flow of my > project as i know so far. Because i have read the makefiles in detail, > and when i make my project, the sub projects in my project executed in > order. > > The problem i found is it cost much more time when use CMake generated > Makefile to compile a single source file with gcc. I choose a passage of > gcc options for each flow: > > In alredy exist Makfile: > > g++ “some gcc options like -W...” > -c -g -DMACRO1 -DMACRO2 ... -isystemdir1 -isystemdir2 ... > header_include_dir1header_include_dir2 ... -MMD -MP -MF -o src.o src.cpp > > In CMake generated Makfile: > > g++ “some gcc options like -W...” > -g header_include_dir1header_include_dir2 ... -DMACRO1 -DMACRO2 ... > -isystemdir1 -isystemdir2 -o src.o -c src.cpp > > other files when compile are also like above, but will cost much more > time(2-3times), could you please give me some advices? If you need more > details, please email me. > > Sincere thanks, > Chao > Chuck Atkins wrote >>> >>> Thanks for your analysis for me Andrew. I can't use "-j" options, i >>> think >>> the >> >> reason is the project i dealed with is not parallel. Thus when i use >> "make >>> -jN", it couldn't work correctly every time. Obviously it caused by the >>> Makefile generated by CMake, so i wonder if there are some CMake options >>> to >>> use CPU effectively. >> >> >> This usually means missing dependencies the CMakeLists.txt files. >> Because >> of this you get unpredictable results when compiling in parallel. Check >> your dependencies on targets, link lines, and source files and make sure >> they are all correct and not missing anything. >> >> >> >>> Because i found when i use already exist Makefile, just >>> use "make", it used about 480% CPU. >> >> >> The Makefile is probably explicitly adding a fixed number of -j options. >> CMake will not do this and instead rely on the user to call make with >> their >> desired appropriate level of parallelism. >> >> >> >>> And when i use CMake generated Makefile, it just uesd about 96% CPU. The >>> "hardware acceleration" i said means how to >>> CPU more effectively in CMake. >>> >> >> -jN is as good as it gets for make. That being said, you can always try >> a >> different generator, like Ninja, which tends to have quite a bit better >> build times in parallel. >> >> First things first though, you need to get your dependency problem >> squared >> away. That's the underlying cause of why your parallel builds with -j >> are >> unpredictable. >> >> -- >> >> 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 -- View this message in context: http://cmake.3232098.n2.nabble.com/Does-Makefile-generated-by-CMake-support-make-jN-tp7593949p7593973.html Sent from the CMake mailing list archive at Nabble.com. -- 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