The Arduino developers are tracking this bug here:
opened 11:18PM - 19 Jun 16 UTC
topic: code
type: imperfection
topic: build-process
### Describe the problem
The previous file persists in the sketch build folde… r after a sketch code file with extension other than `.ino`/`.pde` is renamed.
🐛 This can result in spurious compilation errors or confusing bugs. Arduino CLI users can work around the bug by adding the `--clean` flag to their command, but the only workaround for Arduino IDE users is to manually clean the build folder.
### To reproduce
```text
$ arduino-cli version
arduino-cli.exe Version: git-snapshot Commit: a735ddfd Date: 2023-01-15T01:00:07Z
$ arduino-cli sketch new /tmp/FooSketch
$ echo "void asdf() {}" > /tmp/FooSketch/foo.cpp
$ arduino-cli compile --fqbn arduino:avr:uno /tmp/FooSketch
[...]
$ mv /tmp/FooSketch/foo.cpp /tmp/FooSketch/bar.cpp
$ arduino-cli compile --fqbn arduino:avr:uno /tmp/FooSketch
C:\Users\per\AppData\Local\Temp\arduino\sketch-2405C4C9F90028537C79B0744BCE536E\sketch\foo.cpp.o (symbol from plugin): In function `asdf()':
(.text+0x0): multiple definition of `asdf()'
C:\Users\per\AppData\Local\Temp\arduino\sketch-2405C4C9F90028537C79B0744BCE536E\sketch\bar.cpp.o (symbol from plugin):(.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
Used platform Version Path
arduino:avr 1.8.6 C:\Users\per\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6
Error during build: exit status 1
$ ls "C:/Users/per/AppData/Local/Temp/arduino/sketch-2405C4C9F90028537C79B0744BCE536E/sketch"
bar.cpp bar.cpp.d bar.cpp.o foo.cpp foo.cpp.d foo.cpp.o FooSketch.ino.cpp FooSketch.ino.cpp.d FooSketch.ino.cpp.o
```
🐛 `foo.cpp` is still present in the build folder even though not present in the sketch. `foo.cpp` is compiled in addition to `bar.cpp` and the primary sketch file.
### Expected behavior
Files are always removed from the sketch build folder when no longer present in the sketch.
### Arduino CLI version
#### Original report
Arduino IDE 1.6.9
#### Last verified with
0.34.1
### Operating system
- Linux
- Windows
### Operating system version
- Mint
- 10
### Additional context
#### Workaround
<a name="workaround-cli"></a>
##### Arduino CLI users
Run an `arduino-cli compile` command with [the `--clean` flag](https://arduino.github.io/arduino-cli/dev/commands/arduino-cli_compile/#options).
<a name="workaround-ide"></a>
##### Arduino IDE users
1. Examine the compiler error message. It will show the path of the temporary build folder.
For example, in this error:
```text
C:\Users\per\AppData\Local\Temp\arduino\sketches\7930E8409AED6D4F4A4782CF985194E9\sketch\foo.cpp.o (symbol from plugin): In function `asdf()':
(.text+0x0): multiple definition of `asdf()'
C:\Users\per\AppData\Local\Temp\arduino\sketches\7930E8409AED6D4F4A4782CF985194E9\sketch\bar.cpp.o (symbol from plugin):(.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
exit status 1
Compilation error: exit status 1
```
The temporary build folder is:
```text
C:\Users\per\AppData\Local\Temp\arduino\sketches\7930E8409AED6D4F4A4782CF985194E9\sketch\
```
1. Delete the temporary build folder.
#### Additional reports
- https://github.com/arduino/arduino-cli/issues/1699
- https://github.com/arduino/arduino-cli/issues/2058
- https://github.com/arduino/arduino-cli/issues/2613
- https://github.com/arduino/arduino-ide/issues/970
- https://github.com/arduino/arduino-ide/issues/1316
- https://github.com/arduino/arduino-ide/issues/1691
- https://github.com/arduino/arduino-ide/issues/2323
- https://github.com/arduino/arduino-ide/issues/482#issuecomment-2188269824
- https://github.com/arduino/Arduino/issues/2072
- https://forum.arduino.cc/t/ide-and-compiler-clear/1077526
- https://forum.arduino.cc/t/changed-tab-name-in-sketch-still-linking-old-o-file/1046286
- https://forum.arduino.cc/t/weird-error-pointing-to-old-code/1113608
- https://forum.arduino.cc/t/ide2-bit-upset-need-help/1129513
- https://forum.arduino.cc/t/renamed-tabs-wont-go-away/1165338
- https://forum.arduino.cc/t/file-renaming-issue/1173234/6
- https://forum.arduino.cc/t/reorganizing-code-w-wire-h-library/1180211
- https://forum.arduino.cc/t/ide-not-recognising-file-type-change-from-c-to-cpp/1215993
#### Keywords
- rename
- header
- .h
- .cpp
- .c
- C++
### Issue checklist
- [X] I searched for previous reports in [the issue tracker](https://github.com/arduino/arduino-ide/issues?q=)
- [X] I verified the problem still occurs when using the latest [nightly build](https://www.arduino.cc/en/software#nightly-builds)
- [X] My report contains all necessary details
If you have a GitHub account, you can subscribe to that thread to get notifications of any new developments related to this subject:
Please only comment on the GitHub issue thread if you have new technical information that will assist with the resolution. General discussion and support requests are always welcome here on the Arduino Forum.