[Update] The original question to pass down a -j argument seems irrelevant now that I know ninja does it automatically. Still, other crucial cpp argements need to be passed to cmake, then ninja, finally to cpp. How do I do that?
Here is the link to the relevant reply:
viewtopic.php?f=13&t=17085&p=64353#p65794
[Original]
I'm used to V3.3 and make. I can add -j option to make command to use all cores with maximal amount of jobs. With the V4.1 how do I do that with cmake? Just adding -j isn't recognized. I hope cmake isn't running on a single core. I timed hello_world to take about 1 minute 27 seconds to compile from scratch on my old machine with 4 cores. Is -j already enabled with cmake? I don't want to install 4.x on my new machine until I finish testing it with my project code on a separate machine. Thanks.
According to the help, I can invoke cmake directly so I did, after fullclean.
cmake -j .. -G Ninja
ninja -j0
It took about 1 minute 2 seconds. I wonder if I can make this ninja use all cores. Any ideas if this is the right speed for an i5 4 core 3.2GHz?
ESP-IDF V4.x with extra argements for idf.py to pass down?
ESP-IDF V4.x with extra argements for idf.py to pass down?
Last edited by zliudr on Sun Sep 27, 2020 7:26 pm, edited 2 times in total.
-
- Posts: 74
- Joined: Wed Oct 23, 2019 1:49 am
Re: How do you enable -j option for ESP-IDF V4.x with cmake?
Ninja automatically defaults to the number of CPUs, so you shouldn't haven't to use any -jX option like you do with make.
Re: How do you enable -j option for ESP-IDF V4.x with cmake?
OK thanks. Then what about the cmake? I did a test running cmake without -j, with -j, and with -j0. About the same time, ~11 seconds. I guess my suspicion is rooted from ESP-IDF V3.3 with the msys32 and make. With make, you HAVE to specify -j to use all cores. It makes a huge difference once I knew the -j switch. Also processors make huge difference. With my moderate i5 3.0GHz 4-core system, a project could take 3.5 minutes to build from scratch. But with my i9 3.7GHz 10-core system, same project takes just shy of 30 seconds to build with -j. Without it, my i9 is just as helpless as i5.
-
- Posts: 74
- Joined: Wed Oct 23, 2019 1:49 am
Re: How do you enable -j option for ESP-IDF V4.x with cmake?
I think CMake's -j just maps to the underlying build tool, e.g. Ninja. So it shouldnt make a difference here.
Yeah, with make you definitely wanna use -j like you say.
Yeah, with make you definitely wanna use -j like you say.
Re: How do you enable -j option for ESP-IDF V4.x with cmake?
It's hard to catch the exact command but I managed to catch this cmake command when I ran idf.py and it doesn't have -j option:
So if I want to have the convenience of idf.py, then how do I add -j to it, is it here?
So if I want to have the convenience of idf.py, then how do I add -j to it, is it here?
Code: Select all
cmake_args = [
"cmake",
"-G",
args.generator,
"-DPYTHON_DEPS_CHECKED=1",
"-DESP_PLATFORM=1",
]
Re: How do you enable -j option for ESP-IDF V4.x with cmake?
OK I added a "-j" to the option and saw it was used"
It didn't seem to make a difference in the compile time so I'm happy. I'll be upgrading my main computer to ESP-IDF 4.0 soon, after I make sure my project compiles on my spare machine.
Code: Select all
Executing "cmake -j -G Ninja -DPYTHON_DEPS_CHECKED=1 -DESP_PLATFORM=1 --warn-uninitialized -DWARN_UNINITIALIZED=1 -DCCACHE_ENABLE=1 c:\users\tarza\documents\hello_world"...
Re: How do you enable -j option for ESP-IDF V4.x with cmake?
I'm running a Win10 machine and use cmd.exe as my build environment. I'm at IDF v4.1. When I run idf.py to build my app, I use Task Manager to look at the individual utilization of the four cores in my processor, and they're all pinned at 99% utilization. So it looks like idf.py sets up cmake and ninja to do the right thing by default, at least on my machine with my setup.
I'd be interested, though, where to find cmake_args = [...] referred to in another post. How do I access that?
I'd be interested, though, where to find cmake_args = [...] referred to in another post. How do I access that?
Re: How do you enable -j option for ESP-IDF V4.x with cmake?
I'm on the same boat. I have a list of cpp arguments that needs to be passed on but idf.py doesn't seem to do it. Here is my list:
I'd say that everything CAN be accomplished if I just define them in a header file EXCEPT for -w. I need to surprise warnings that are treated as errors that terminate the compile. Which post was asking about cmake_args? I think cpp argements can just be passed to cmake to be passed down to ninja and then cpp.
Code: Select all
'EXTRA_CPPFLAGS+=-DFIRMWARE_VER=20092501UL -DDEV_FEATURES=1 -DLATEST_AZURE=1 -DPRINT_MEMORY_DEBUG=1 -w'
Who is online
Users browsing this forum: MicroController and 124 guests