I compile pretty big projects with this IDE. I encounter a very long delay caused by make file generation and building all files every time I compile.
Isn't there a check which file is modified prior compiling?
If I change only one single file I don't want the whole project to be compiled from scratch!
thx for any help.
Hello
As far as I know Incremental build is activated by default when you create a project.
Did you associate a pre-build step to your project? My experience is that when there is a pre-build step
associated, the project, this forces a full rebuild of the project.
To check that:
- Open your project Properties dialog
- Go to C/C++ Build > Settings page and switch to the Build Steps tab.
Is anything specified in pre-build steps group?
CrasyCat
No, I just have a post-build step.
I don't see any "Incremental build" option in the project settings...
OK, let's try checking the settings again. In CodeWarrior v10.2 for MCUs, do the following:
1) In the C/C++ Perspective, select your project.
2) Choose Project > Properties.
A Properties for <your project> window appears.
3) Choose C/C++ Build. Do NOT expand this choice, just click on it.
A C/C++ Build view appears in the Properties window.
4) Click on the Behaviour tab to display the build settings.
5) In the Workbench Build Behaviour group, see if the Build (Incremental Build) option is checked.
---Tom
Thx. Now I know where it is. It has been already active.
Apparently it depends on which file I have changed. The dependency check then builds every file which depends on the
changed one (even if it's only a cpp file I changed).
I have seen some other strange effects:
1. If I disable incremental build, the compilation wouldn't start at all
2. If I disable automatic make-file generation I can't generate make files manually either (CTRL+6)
3. If automatic make-file generation is active, the generation process should only be done if the project changes. But it is done everytime (and last for nearly a minute on my pc)
4. If I change a cpp file x which is referenced by another cpp file y then y is also compiled again. If x was a header file this would make sense, but this behavior isn't. This leads to a lot of unnecessary compilation dependencies.
Hello
What do you mean exactly when you say
"If I change a cpp file x which is referenced by another cpp file y"?
Do you have an include x.cpp inside of y.cpp?
Did you check the preprocessor output for file y.cpp?
CrasyCat
No, I use a class in y which is implemented in x. I just include x's header in y, which has not been changed, so y should not compile again.
Hello
I would recommend you to submit a service request for that.
Click here to submit a service request.
Make sure to attach a reproducible project and installed product information to the service request.
CrasyCat
done.
Service Request number 1-906077612
You can bypass the regeneration of makefiles if you build from command-line. Just walk into the root of the build directory and run mingw-make.exe from c:\freescale\cw mcu 10.2\gnu\bin.
Probably there's also a switch somewhere in the Eclipse CDT project settings to stop regenerating makefiles, but then your build is silently wrong when you add files and don't remember to regenerate makefiles.
If you observe that every file is compiled every time, even if you changed nothing at all, that's a different problem; the make tool should compare timestamps. Is your workspace on a fileserver with a noticeable clock difference?
Thats quite uncomfortable. Using an IDE should avoid command-line calls.
Alas there isn't such a switch. But as you are the developer of this Eclipse-CW-Edition, it should be possible to add such a checkbox.
I build locally. It seems that the comparison does not work or there is also some kind of hidden switch?