Open
Description
Describe the problem
The previous file persists in the sketch build folder 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
$ 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
Arduino CLI users
Run an arduino-cli compile
command with the --clean
flag.
Arduino IDE users
- Examine the compiler error message. It will show the path of the temporary build folder.
For example, in this error:The temporary build folder is: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
C:\Users\per\AppData\Local\Temp\arduino\sketches\7930E8409AED6D4F4A4782CF985194E9\sketch\
- Delete the temporary build folder.
Additional reports
- Sketch source move to build folder bug: file extension changing #1699
- Rename of .h and .cpp files does not work #2058
- changing the name of src directory, don't change compilator cache #2613
- Renaming Tab after sucessful build causes build failure #2870
- Renaming a tab does not remove the file from build cache arduino-ide#970
- File are not renamed when renaming tab arduino-ide#1316
- Code would not compile/link without errors, copy of code compiled/linked without errors arduino-ide#1691
- Renaming files results in bogus compile errors (cache not properly cleared) arduino-ide#2323
- Incorrect handling of changed case of sketch file name arduino-ide#482 (comment)
- Deleted header files remain includable Arduino#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
- https://forum.arduino.cc/t/code-compiles-in-old-ide-but-not-the-new-one/1286767
- https://forum.arduino.cc/t/problem-while-defining-namespaces-with-it-own-cpp-and-hpp-files/1304403
- https://forum.arduino.cc/t/there-is-a-bug-in-the-wire-library-for-version-1-8-6-avr-boards/1336297/18
- https://forum.arduino.cc/t/new-version-of-arduino-ide-2-3-5-error/1371224/20
- https://forum.arduino.cc/t/how-to-clear-cache-from-ide/1374114
- https://forum.arduino.cc/t/ld-problems-with-multiple-source-files/1381506/6
- https://forum.arduino.cc/t/how-to-clear-cache-from-ide/1374114/12
Keywords
-
rename
-
header
-
.h
-
.cpp
-
.c
-
C++
Issue checklist
- I searched for previous reports in the issue tracker
- I verified the problem still occurs when using the latest nightly build
- My report contains all necessary details
Metadata
Metadata
Assignees
Labels
Related to the sketch build processRelated to the sketch build processRelated to content of the project itselfRelated to content of the project itselfPerceived defect in any part of projectPerceived defect in any part of project