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-tp7593949p7593966.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