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