This repository was archived by the owner on Apr 17, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 39
This repository was archived by the owner on Apr 17, 2023. It is now read-only.
Problem with linking Wire lib #43
Copy link
Copy link
Closed
Labels
bugPotential bug in codePotential bug in code
Description
I have build problem with project using Wire lib:
CMakeLists.txt
cmake_minimum_required(VERSION 3.8)
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/Arduino-Toolchain.cmake)
project(lcd LANGUAGES C CXX ASM)
get_board_id(board_id mega atmega2560)
add_arduino_executable(lcd ${board_id} src/lcd.cpp)
find_arduino_library(crystal LiquidCrystal_I2C ${board_id} 3RD_PARTY)
link_arduino_library(lcd crystal ${board_id})
src/lcd.cpp
#include <Arduino.h>
#include <LiquidCrystal_I2C.h>
#define LCD_ADDRESS 0x27
#define LCD_COLUMNS 20
#define LCD_ROWS 4
LiquidCrystal_I2C lcd(LCD_ADDRESS, LCD_COLUMNS, LCD_ROWS);
void setup() {
Serial.begin(9600);
lcd.begin(LCD_COLUMNS, LCD_ROWS);
lcd.clear();
}
void loop() {
}
Library LiquidCrystal_I2C use Wire library and it should be linked to executable, but there is an linking error:
- make
Scanning dependencies of target mega_atmega2560_core_lib
[ 3%] Building C object CMakeFiles/mega_atmega2560_core_lib.dir/opt/arduino/hardware/arduino/avr/cores/arduino/WInterrupts.c.obj
[ 6%] Building C object CMakeFiles/mega_atmega2560_core_lib.dir/opt/arduino/hardware/arduino/avr/cores/arduino/hooks.c.obj
[ 9%] Building C object CMakeFiles/mega_atmega2560_core_lib.dir/opt/arduino/hardware/arduino/avr/cores/arduino/wiring.c.obj
[ 12%] Building C object CMakeFiles/mega_atmega2560_core_lib.dir/opt/arduino/hardware/arduino/avr/cores/arduino/wiring_analog.c.obj
[ 15%] Building C object CMakeFiles/mega_atmega2560_core_lib.dir/opt/arduino/hardware/arduino/avr/cores/arduino/wiring_digital.c.obj
[ 18%] Building C object CMakeFiles/mega_atmega2560_core_lib.dir/opt/arduino/hardware/arduino/avr/cores/arduino/wiring_pulse.c.obj
[ 21%] Building C object CMakeFiles/mega_atmega2560_core_lib.dir/opt/arduino/hardware/arduino/avr/cores/arduino/wiring_shift.c.obj
[ 25%] Building CXX object CMakeFiles/mega_atmega2560_core_lib.dir/opt/arduino/hardware/arduino/avr/cores/arduino/CDC.cpp.obj
[ 28%] Building CXX object CMakeFiles/mega_atmega2560_core_lib.dir/opt/arduino/hardware/arduino/avr/cores/arduino/HardwareSerial.cpp.obj
[ 31%] Building CXX object CMakeFiles/mega_atmega2560_core_lib.dir/opt/arduino/hardware/arduino/avr/cores/arduino/HardwareSerial0.cpp.obj
[ 34%] Building CXX object CMakeFiles/mega_atmega2560_core_lib.dir/opt/arduino/hardware/arduino/avr/cores/arduino/HardwareSerial1.cpp.obj
[ 37%] Building CXX object CMakeFiles/mega_atmega2560_core_lib.dir/opt/arduino/hardware/arduino/avr/cores/arduino/HardwareSerial2.cpp.obj
[ 40%] Building CXX object CMakeFiles/mega_atmega2560_core_lib.dir/opt/arduino/hardware/arduino/avr/cores/arduino/HardwareSerial3.cpp.obj
[ 43%] Building CXX object CMakeFiles/mega_atmega2560_core_lib.dir/opt/arduino/hardware/arduino/avr/cores/arduino/IPAddress.cpp.obj
[ 46%] Building CXX object CMakeFiles/mega_atmega2560_core_lib.dir/opt/arduino/hardware/arduino/avr/cores/arduino/PluggableUSB.cpp.obj
[ 50%] Building CXX object CMakeFiles/mega_atmega2560_core_lib.dir/opt/arduino/hardware/arduino/avr/cores/arduino/Print.cpp.obj
[ 53%] Building CXX object CMakeFiles/mega_atmega2560_core_lib.dir/opt/arduino/hardware/arduino/avr/cores/arduino/Stream.cpp.obj
[ 56%] Building CXX object CMakeFiles/mega_atmega2560_core_lib.dir/opt/arduino/hardware/arduino/avr/cores/arduino/Tone.cpp.obj
[ 59%] Building CXX object CMakeFiles/mega_atmega2560_core_lib.dir/opt/arduino/hardware/arduino/avr/cores/arduino/USBCore.cpp.obj
[ 62%] Building CXX object CMakeFiles/mega_atmega2560_core_lib.dir/opt/arduino/hardware/arduino/avr/cores/arduino/WMath.cpp.obj
[ 65%] Building CXX object CMakeFiles/mega_atmega2560_core_lib.dir/opt/arduino/hardware/arduino/avr/cores/arduino/WString.cpp.obj
[ 68%] Building CXX object CMakeFiles/mega_atmega2560_core_lib.dir/opt/arduino/hardware/arduino/avr/cores/arduino/abi.cpp.obj
[ 71%] Building CXX object CMakeFiles/mega_atmega2560_core_lib.dir/opt/arduino/hardware/arduino/avr/cores/arduino/main.cpp.obj
[ 75%] Building CXX object CMakeFiles/mega_atmega2560_core_lib.dir/opt/arduino/hardware/arduino/avr/cores/arduino/new.cpp.obj
[ 78%] Building ASM object CMakeFiles/mega_atmega2560_core_lib.dir/opt/arduino/hardware/arduino/avr/cores/arduino/wiring_pulse.S.obj
[ 81%] Linking CXX static library libmega_atmega2560_core_lib.a
[ 81%] Built target mega_atmega2560_core_lib
Scanning dependencies of target Wire
[ 84%] Building CXX object CMakeFiles/Wire.dir/opt/arduino/hardware/arduino/avr/libraries/Wire/src/Wire.cpp.obj
[ 87%] Linking CXX static library libWire.a
[ 87%] Built target Wire
Scanning dependencies of target crystal
[ 90%] Building CXX object CMakeFiles/crystal.dir/libraries/LiquidCrystal_I2C/LiquidCrystal_I2C.cpp.obj
[ 93%] Linking CXX static library libcrystal.a
[ 93%] Built target crystal
Scanning dependencies of target lcd
[ 96%] Building CXX object CMakeFiles/lcd.dir/src/lcd.cpp.obj
[100%] Linking CXX executable lcd.elf
/tmp/ccNGShVI.ltrans0.ltrans.o: In function `write':
/opt/arduino/hardware/arduino/avr/libraries/Wire/src/Wire.cpp:228: undefined reference to `twi_transmit'
/opt/arduino/hardware/arduino/avr/libraries/Wire/src/Wire.cpp:210: undefined reference to `twi_transmit'
/tmp/ccNGShVI.ltrans0.ltrans.o: In function `endTransmission':
/opt/arduino/hardware/arduino/avr/libraries/Wire/src/Wire.cpp:173: undefined reference to `twi_writeTo'
collect2: error: ld returned 1 exit status
CMakeFiles/lcd.dir/build.make:98: recipe for target 'lcd.elf' failed
make[2]: *** [lcd.elf] Error 1
CMakeFiles/Makefile2:144: recipe for target 'CMakeFiles/lcd.dir/all' failed
make[1]: *** [CMakeFiles/lcd.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
All files are available at https://github.com/andrzejo/cmake-test
Metadata
Metadata
Assignees
Labels
bugPotential bug in codePotential bug in code