qmk / qmk_firmware

Open-source keyboard firmware for Atmel AVR and Arm USB families
https://qmk.fm
GNU General Public License v2.0
17.97k stars 38.62k forks source link

[Bug] Built-in caps word function causing build error? #17276

Closed gourdo1 closed 2 years ago

gourdo1 commented 2 years ago

I followed these instructions (https://docs.qmk.fm/#/feature_caps_word) to incorporate the built-in caps word function in my keymap, but I'm getting these errors on build:

 | c:/qmk_msys/mingw64/bin/../lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/bin/ld.exe: .build/obj_gmmk_pro_rev1_ansi_gourdo1/quantum/caps_word.o (symbol from plugin): in function `caps_word_reset_idle_timer':
 | (.text+0x0): multiple definition of `caps_word_reset_idle_timer'; .build/obj_gmmk_pro_rev1_ansi_gourdo1/caps_word.o (symbol from plugin):(.text+0x0): first defined here
 | c:/qmk_msys/mingw64/bin/../lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/bin/ld.exe: .build/obj_gmmk_pro_rev1_ansi_gourdo1/quantum/caps_word.o (symbol from plugin): in function `caps_word_reset_idle_timer':
 | (.text+0x0): multiple definition of `is_caps_word_on'; .build/obj_gmmk_pro_rev1_ansi_gourdo1/caps_word.o (symbol from plugin):(.text+0x0): first defined here | c:/qmk_msys/mingw64/bin/../lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/bin/ld.exe: .build/obj_gmmk_pro_rev1_ansi_gourdo1/quantum/caps_word.o (symbol from plugin): in function `caps_word_reset_idle_timer':
 | (.text+0x0): multiple definition of `caps_word_on'; .build/obj_gmmk_pro_rev1_ansi_gourdo1/caps_word.o (symbol from plugin):(.text+0x0): first defined here
 | c:/qmk_msys/mingw64/bin/../lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/bin/ld.exe: .build/obj_gmmk_pro_rev1_ansi_gourdo1/quantum/caps_word.o (symbol from plugin): in function `caps_word_reset_idle_timer':
 | (.text+0x0): multiple definition of `caps_word_off'; .build/obj_gmmk_pro_rev1_ansi_gourdo1/caps_word.o (symbol from plugin):(.text+0x0): first defined here
 | c:/qmk_msys/mingw64/bin/../lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/bin/ld.exe: .build/obj_gmmk_pro_rev1_ansi_gourdo1/quantum/caps_word.o (symbol from plugin): in function `caps_word_reset_idle_timer':
 | (.text+0x0): multiple definition of `caps_word_task'; .build/obj_gmmk_pro_rev1_ansi_gourdo1/caps_word.o (symbol from plugin):(.text+0x0): first defined here
 | c:/qmk_msys/mingw64/bin/../lib/gcc/arm-none-eabi/10.1.0/../../../../arm-none-eabi/bin/ld.exe: .build/obj_gmmk_pro_rev1_ansi_gourdo1/quantum/caps_word.o (symbol from plugin): in function `caps_word_reset_idle_timer':
 | (.text+0x0): multiple definition of `caps_word_toggle'; .build/obj_gmmk_pro_rev1_ansi_gourdo1/caps_word.o (symbol from plugin):(.text+0x0): first defined here
 | collect2.exe: error: ld returned 1 exit status
 |
make[1]: *** [builddefs/common_rules.mk:364: .build/gmmk_pro_rev1_ansi_gourdo1.elf] Error 1
Make finished with errors

All I've done is put _CAPS_WORDENABLE = yes in my rules.mk and _#define BOTH_SHIFTS_TURNS_ON_CAPSWORD in config.h as indicated in the documentation.

This is my branch/keymap: https://github.com/gourdo1/qmk_firmware/tree/capsword-test/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1

System Information

Keyboard: GMMK Pro Revision (if applicable): Rev1 Operating system: Windows

zvecr commented 2 years ago

You still have SRC += caps_word.c which needs to be removed. That line will be picking up the quantum version of the VPATH, and try to link in the same content twice.

gourdo1 commented 2 years ago

Yup, totally missed it. Thanks!