[CMake] Does Makefile generated by CMake support make -jN?
Chaos Zhang
zcsd2012 at gmail.com
Sun Jul 17 21:18:12 EDT 2016
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.
More information about the CMake
mailing list