hi guys
this
undefined reference to app_main
phenomenon comes again over me ( win 7, msys32, last esp-idf )
CC trax.o
CC eri.o
AR libxtensa-debug-module.a
LD hello-world.elf
C:/nod/11/build/esp32\libesp32.a(cpu_start.o):(.literal.main_task+0x8): undefined reference to app_main'
C:/nod/11/build/esp32\libesp32.a(cpu_start.o): In functionmain_task':
C:/sdk32/esp-idf/components/esp32/cpu_start.c:267: undefined reference to `app_main'
collect2.exe: error: ld returned 1 exit status
make: * [C:/sdk32/esp-idf/make/project.mk:323: /c/nod/11/build/hello-world.elf] Fehler 1
i search just in time but find no mistake - i used the hello world example for minimal code.
best wishes
rudi ;-)
Hi rudi,
Can you run the following command and copy/paste the output, please:
make V=1
Also, if you can, please run make clean and then re-run the above command and copy/paste that output separately.
Hi Angus,
txs,
step 1:
$ make V=1
including /c/sdk32/esp-idf/components/bootloader/Makefile.projbuild...
including /c/sdk32/esp-idf/components/bootloader_support/Makefile.projbuild...
including /c/sdk32/esp-idf/components/coap/Makefile.projbuild...
including /c/sdk32/esp-idf/components/esp32/Makefile.projbuild...
including /c/sdk32/esp-idf/components/esptool_py/Makefile.projbuild...
including /c/sdk32/esp-idf/components/mbedtls/Makefile.projbuild...
including /c/sdk32/esp-idf/components/nghttp/Makefile.projbuild...
including /c/sdk32/esp-idf/components/partition_table/Makefile.projbuild...
make -C /c/sdk32/esp-idf/components/bootloader/src V=1 BUILD_DIR_BASE=/c/nod/11/build/bootloader TEST_COMPONENTS= /c/nod/11/build/bootloader/bootloader.bin
make[1]: Verzeichnis „/c/sdk32/esp-idf/components/bootloader/src“ wird betreten
including /c/sdk32/esp-idf/components/esptool_py/Makefile.projbuild...
including /c/sdk32/esp-idf/components/bootloader/Makefile.projbuild...
including /c/sdk32/esp-idf/components/bootloader_support/Makefile.projbuild...
make -C /c/nod/11/build/bootloader/bootloader_support -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/bootloader_support/component.mk COMPONENT_NAME=bootloader_support build
make[2]: Verzeichnis „/c/nod/11/build/bootloader/bootloader_support“ wird betreten
make[2]: Verzeichnis „/c/nod/11/build/bootloader/bootloader_support“ wird verlassen
Target 'bootloader_support-build' responsible for '/c/nod/11/build/bootloader/bootloader_support/libbootloader_support.a'
make -C /c/nod/11/build/bootloader/log -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/log/component.mk COMPONENT_NAME=log build
make[2]: Verzeichnis „/c/nod/11/build/bootloader/log“ wird betreten
make[2]: Verzeichnis „/c/nod/11/build/bootloader/log“ wird verlassen
Target 'log-build' responsible for '/c/nod/11/build/bootloader/log/liblog.a'
make -C /c/nod/11/build/bootloader/spi_flash -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/spi_flash/component.mk COMPONENT_NAME=spi_flash build
make[2]: Verzeichnis „/c/nod/11/build/bootloader/spi_flash“ wird betreten
make[2]: Verzeichnis „/c/nod/11/build/bootloader/spi_flash“ wird verlassen
Target 'spi_flash-build' responsible for '/c/nod/11/build/bootloader/spi_flash/libspi_flash.a'
make -C /c/nod/11/build/bootloader/micro-ecc -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/micro-ecc/component.mk COMPONENT_NAME=micro-ecc build
make[2]: Verzeichnis „/c/nod/11/build/bootloader/micro-ecc“ wird betreten
make[2]: Verzeichnis „/c/nod/11/build/bootloader/micro-ecc“ wird verlassen
Target 'micro-ecc-build' responsible for '/c/nod/11/build/bootloader/micro-ecc/libmicro-ecc.a'
make -C /c/nod/11/build/bootloader/main -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/bootloader/src/main/component.mk COMPONENT_NAME=main build
make[2]: Verzeichnis „/c/nod/11/build/bootloader/main“ wird betreten
make[2]: Verzeichnis „/c/nod/11/build/bootloader/main“ wird verlassen
Target 'main-build' responsible for '/c/nod/11/build/bootloader/main/libmain.a'
make[1]: Verzeichnis „/c/sdk32/esp-idf/components/bootloader/src“ wird verlassen
make -C /c/nod/11/build/app_update -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/app_update/component.mk COMPONENT_NAME=app_update build
make[1]: Verzeichnis „/c/nod/11/build/app_update“ wird betreten
make[1]: Verzeichnis „/c/nod/11/build/app_update“ wird verlassen
Target 'app_update-build' responsible for '/c/nod/11/build/app_update/libapp_update.a'
make -C /c/nod/11/build/bootloader_support -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/bootloader_support/component.mk COMPONENT_NAME=bootloader_support build
make[1]: Verzeichnis „/c/nod/11/build/bootloader_support“ wird betreten
make[1]: Verzeichnis „/c/nod/11/build/bootloader_support“ wird verlassen
Target 'bootloader_support-build' responsible for '/c/nod/11/build/bootloader_support/libbootloader_support.a'
make -C /c/nod/11/build/bt -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/bt/component.mk COMPONENT_NAME=bt build
make[1]: Verzeichnis „/c/nod/11/build/bt“ wird betreten
make[1]: Verzeichnis „/c/nod/11/build/bt“ wird verlassen
Target 'bt-build' responsible for '/c/nod/11/build/bt/libbt.a'
make -C /c/nod/11/build/coap -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/coap/component.mk COMPONENT_NAME=coap build
make[1]: Verzeichnis „/c/nod/11/build/coap“ wird betreten
make[1]: Verzeichnis „/c/nod/11/build/coap“ wird verlassen
Target 'coap-build' responsible for '/c/nod/11/build/coap/libcoap.a'
make -C /c/nod/11/build/cxx -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/cxx/component.mk COMPONENT_NAME=cxx build
make[1]: Verzeichnis „/c/nod/11/build/cxx“ wird betreten
make[1]: Verzeichnis „/c/nod/11/build/cxx“ wird verlassen
Target 'cxx-build' responsible for '/c/nod/11/build/cxx/libcxx.a'
make -C /c/nod/11/build/driver -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/driver/component.mk COMPONENT_NAME=driver build
make[1]: Verzeichnis „/c/nod/11/build/driver“ wird betreten
make[1]: Verzeichnis „/c/nod/11/build/driver“ wird verlassen
Target 'driver-build' responsible for '/c/nod/11/build/driver/libdriver.a'
make -C /c/nod/11/build/esp32 -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/esp32/component.mk COMPONENT_NAME=esp32 build
make[1]: Verzeichnis „/c/nod/11/build/esp32“ wird betreten
make[1]: Verzeichnis „/c/nod/11/build/esp32“ wird verlassen
Target 'esp32-build' responsible for '/c/nod/11/build/esp32/libesp32.a'
make -C /c/nod/11/build/ethernet -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/ethernet/component.mk COMPONENT_NAME=ethernet build
make[1]: Verzeichnis „/c/nod/11/build/ethernet“ wird betreten
make[1]: Verzeichnis „/c/nod/11/build/ethernet“ wird verlassen
Target 'ethernet-build' responsible for '/c/nod/11/build/ethernet/libethernet.a'
make -C /c/nod/11/build/expat -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/expat/component.mk COMPONENT_NAME=expat build
make[1]: Verzeichnis „/c/nod/11/build/expat“ wird betreten
make[1]: Verzeichnis „/c/nod/11/build/expat“ wird verlassen
Target 'expat-build' responsible for '/c/nod/11/build/expat/libexpat.a'
make -C /c/nod/11/build/fatfs -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/fatfs/component.mk COMPONENT_NAME=fatfs build
make[1]: Verzeichnis „/c/nod/11/build/fatfs“ wird betreten
make[1]: Verzeichnis „/c/nod/11/build/fatfs“ wird verlassen
Target 'fatfs-build' responsible for '/c/nod/11/build/fatfs/libfatfs.a'
make -C /c/nod/11/build/freertos -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/freertos/component.mk COMPONENT_NAME=freertos build
make[1]: Verzeichnis „/c/nod/11/build/freertos“ wird betreten
make[1]: Verzeichnis „/c/nod/11/build/freertos“ wird verlassen
Target 'freertos-build' responsible for '/c/nod/11/build/freertos/libfreertos.a'
make -C /c/nod/11/build/json -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/json/component.mk COMPONENT_NAME=json build
make[1]: Verzeichnis „/c/nod/11/build/json“ wird betreten
make[1]: Verzeichnis „/c/nod/11/build/json“ wird verlassen
Target 'json-build' responsible for '/c/nod/11/build/json/libjson.a'
make -C /c/nod/11/build/log -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/log/component.mk COMPONENT_NAME=log build
make[1]: Verzeichnis „/c/nod/11/build/log“ wird betreten
make[1]: Verzeichnis „/c/nod/11/build/log“ wird verlassen
Target 'log-build' responsible for '/c/nod/11/build/log/liblog.a'
make -C /c/nod/11/build/lwip -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/lwip/component.mk COMPONENT_NAME=lwip build
make[1]: Verzeichnis „/c/nod/11/build/lwip“ wird betreten
make[1]: Verzeichnis „/c/nod/11/build/lwip“ wird verlassen
Target 'lwip-build' responsible for '/c/nod/11/build/lwip/liblwip.a'
make -C /c/nod/11/build/mbedtls -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/mbedtls/component.mk COMPONENT_NAME=mbedtls build
make[1]: Verzeichnis „/c/nod/11/build/mbedtls“ wird betreten
make[1]: Verzeichnis „/c/nod/11/build/mbedtls“ wird verlassen
Target 'mbedtls-build' responsible for '/c/nod/11/build/mbedtls/libmbedtls.a'
make -C /c/nod/11/build/mdns -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/mdns/component.mk COMPONENT_NAME=mdns build
make[1]: Verzeichnis „/c/nod/11/build/mdns“ wird betreten
make[1]: Verzeichnis „/c/nod/11/build/mdns“ wird verlassen
Target 'mdns-build' responsible for '/c/nod/11/build/mdns/libmdns.a'
make -C /c/nod/11/build/micro-ecc -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/micro-ecc/component.mk COMPONENT_NAME=micro-ecc build
make[1]: Verzeichnis „/c/nod/11/build/micro-ecc“ wird betreten
make[1]: Verzeichnis „/c/nod/11/build/micro-ecc“ wird verlassen
Target 'micro-ecc-build' responsible for '/c/nod/11/build/micro-ecc/libmicro-ecc.a'
make -C /c/nod/11/build/newlib -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/newlib/component.mk COMPONENT_NAME=newlib build
make[1]: Verzeichnis „/c/nod/11/build/newlib“ wird betreten
make[1]: Verzeichnis „/c/nod/11/build/newlib“ wird verlassen
Target 'newlib-build' responsible for '/c/nod/11/build/newlib/libnewlib.a'
make -C /c/nod/11/build/nghttp -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/nghttp/component.mk COMPONENT_NAME=nghttp build
make[1]: Verzeichnis „/c/nod/11/build/nghttp“ wird betreten
make[1]: Verzeichnis „/c/nod/11/build/nghttp“ wird verlassen
Target 'nghttp-build' responsible for '/c/nod/11/build/nghttp/libnghttp.a'
make -C /c/nod/11/build/nvs_flash -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/nvs_flash/component.mk COMPONENT_NAME=nvs_flash build
make[1]: Verzeichnis „/c/nod/11/build/nvs_flash“ wird betreten
make[1]: Verzeichnis „/c/nod/11/build/nvs_flash“ wird verlassen
Target 'nvs_flash-build' responsible for '/c/nod/11/build/nvs_flash/libnvs_flash.a'
make -C /c/nod/11/build/openssl -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/openssl/component.mk COMPONENT_NAME=openssl build
make[1]: Verzeichnis „/c/nod/11/build/openssl“ wird betreten
make[1]: Verzeichnis „/c/nod/11/build/openssl“ wird verlassen
Target 'openssl-build' responsible for '/c/nod/11/build/openssl/libopenssl.a'
make -C /c/nod/11/build/sdmmc -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/sdmmc/component.mk COMPONENT_NAME=sdmmc build
make[1]: Verzeichnis „/c/nod/11/build/sdmmc“ wird betreten
make[1]: Verzeichnis „/c/nod/11/build/sdmmc“ wird verlassen
Target 'sdmmc-build' responsible for '/c/nod/11/build/sdmmc/libsdmmc.a'
make -C /c/nod/11/build/spi_flash -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/spi_flash/component.mk COMPONENT_NAME=spi_flash build
make[1]: Verzeichnis „/c/nod/11/build/spi_flash“ wird betreten
make[1]: Verzeichnis „/c/nod/11/build/spi_flash“ wird verlassen
Target 'spi_flash-build' responsible for '/c/nod/11/build/spi_flash/libspi_flash.a'
make -C /c/nod/11/build/tcpip_adapter -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/tcpip_adapter/component.mk COMPONENT_NAME=tcpip_adapter build
make[1]: Verzeichnis „/c/nod/11/build/tcpip_adapter“ wird betreten
make[1]: Verzeichnis „/c/nod/11/build/tcpip_adapter“ wird verlassen
Target 'tcpip_adapter-build' responsible for '/c/nod/11/build/tcpip_adapter/libtcpip_adapter.a'
make -C /c/nod/11/build/ulp -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/ulp/component.mk COMPONENT_NAME=ulp build
make[1]: Verzeichnis „/c/nod/11/build/ulp“ wird betreten
make[1]: Verzeichnis „/c/nod/11/build/ulp“ wird verlassen
Target 'ulp-build' responsible for '/c/nod/11/build/ulp/libulp.a'
make -C /c/nod/11/build/vfs -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/vfs/component.mk COMPONENT_NAME=vfs build
make[1]: Verzeichnis „/c/nod/11/build/vfs“ wird betreten
make[1]: Verzeichnis „/c/nod/11/build/vfs“ wird verlassen
Target 'vfs-build' responsible for '/c/nod/11/build/vfs/libvfs.a'
make -C /c/nod/11/build/wpa_supplicant -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/wpa_supplicant/component.mk COMPONENT_NAME=wpa_supplicant build
make[1]: Verzeichnis „/c/nod/11/build/wpa_supplicant“ wird betreten
make[1]: Verzeichnis „/c/nod/11/build/wpa_supplicant“ wird verlassen
Target 'wpa_supplicant-build' responsible for '/c/nod/11/build/wpa_supplicant/libwpa_supplicant.a'
make -C /c/nod/11/build/xtensa-debug-module -f /c/sdk32/esp-idf/make/component_wrapper.mk COMPONENT_MAKEFILE=/c/sdk32/esp-idf/components/xtensa-debug-module/component.mk COMPONENT_NAME=xtensa-debug-module build
make[1]: Verzeichnis „/c/nod/11/build/xtensa-debug-module“ wird betreten
make[1]: Verzeichnis „/c/nod/11/build/xtensa-debug-module“ wird verlassen
Target 'xtensa-debug-module-build' responsible for '/c/nod/11/build/xtensa-debug-module/libxtensa-debug-module.a'
xtensa-esp32-elf-gcc -nostdlib -L/c/nod/11/build/app_update -L/c/nod/11/build/bootloader -L/c/nod/11/build/bootloader_support -L/c/nod/11/build/bt -L/c/nod/11/build/coap -L/c/nod/11/build/cxx -L/c/nod/11/build/driver -L/c/nod/11/build/esp32 -L/c/nod/11/build/espcoredump -L/c/nod/11/build/esptool_py -L/c/nod/11/build/ethernet -L/c/nod/11/build/expat -L/c/nod/11/build/fatfs -L/c/nod/11/build/freertos -L/c/nod/11/build/idf_test -L/c/nod/11/build/json -L/c/nod/11/build/log -L/c/nod/11/build/lwip -L/c/nod/11/build/mbedtls -L/c/nod/11/build/mdns -L/c/nod/11/build/micro-ecc -L/c/nod/11/build/newlib -L/c/nod/11/build/nghttp -L/c/nod/11/build/nvs_flash -L/c/nod/11/build/openssl -L/c/nod/11/build/partition_table -L/c/nod/11/build/sdmmc -L/c/nod/11/build/spi_flash -L/c/nod/11/build/tcpip_adapter -L/c/nod/11/build/ulp -L/c/nod/11/build/vfs -L/c/nod/11/build/wpa_supplicant -L/c/nod/11/build/xtensa-debug-module -L/c/nod/11/build/main -u call_user_start_cpu0 -Wl,--gc-sections -Wl,-static -Wl,--start-group -lapp_update -lbootloader_support -lbt -lcoap -lcxx -u __cxa_guard_dummy -ldriver -lesp32 /c/sdk32/esp-idf/components/esp32/libhal.a -L/c/sdk32/esp-idf/components/esp32/lib -lcore -lrtc -lphy -lcoexist -lnet80211 -lpp -lwpa -lsmartconfig -lcoexist -lwps -lwpa2 -L /c/sdk32/esp-idf/components/esp32/ld -T esp32_out.ld -T esp32.common.ld -T esp32.rom.ld -T esp32.peripherals.ld -lethernet -lexpat -lfatfs -lfreertos -Wl,--undefined=uxTopUsedPriority -ljson -llog -llwip -lmbedtls -lmdns -lmicro-ecc /c/sdk32/esp-idf/components/newlib/lib/libc.a /c/sdk32/esp-idf/components/newlib/lib/libm.a -lnewlib -lnghttp -lnvs_flash -lopenssl -lsdmmc -lspi_flash -ltcpip_adapter -lulp -lvfs -lwpa_supplicant -lxtensa-debug-module -lgcc -lstdc++ -Wl,--end-group -Wl,-EL -o /c/nod/11/build/hello-world.elf -Wl,-Map=/c/nod/11/build/hello-world.map
C:/nod/11/build/esp32\libesp32.a(cpu_start.o):(.literal.main_task+0x8): undefined reference to app_main'
C:/nod/11/build/esp32\libesp32.a(cpu_start.o): In functionmain_task':
C:/sdk32/esp-idf/components/esp32/cpu_start.c:267: undefined reference to `app_main'
collect2.exe: error: ld returned 1 exit status
make: * [C:/sdk32/esp-idf/make/project.mk:323: /c/nod/11/build/hello-world.elf] Fehler 1
and here after make clean, the output of make V=1
( You can't comment at this time — your comment is too long (maximum is 65536 characters).
here the second as file
log2.txt
thank you!
best wishes
rudi ;-)
Hi Angus
sry for this action.
usually i create the "empty" component.mk file in the main folder.
but in this example i have forget to cpy the empty file...
and the undefined mistake comes.
Please - can you check this:
if we have no File: component.mk
in the main, then the undefined mistake comes
if we have a File: component.mk
in the main, then compile is ok
but i think this is not ok?
the file in hello_world is empty ( only coments ) :
but if this file is missed, then undefined mistake comes for app_main()
#
# "main" pseudo-component makefile.
#
# (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.)
Hi Angus,
for reproduce this you can example use the hello world example,
rename the component.mk example to component.mk_
compile, and compiler catch with undefined reference to `app_main'.
do we need this file (component.mk) allways created, named in the project main folder?
sry again for the action! after i created this ( cpy ) compile is ok.
i had the same problem in the past, but have not reminder me,
that i have forget to create the ( component.mk ) file in the main folder.

if we allways need this file, would be nice, you can short answere,
yes - you can close this.
if this is a bug, and we do not need to create this file
how we can stop the compile error message?
thank you again for your effort!
best wishes
rudi ;-)
The existence of a component.mk is actually how esp-idf recognizes a component, and the 'main' component effectively isn't much more than just another component... but if you don't know that logic, I agree this behaviour can be puzzling. We'll discuss internally if for the main directory we want to make the existence of this file optional.
Txs Jeroen,
yes, the logic it self how esp-idf recognizes a component is wellknowed,
the "entry" to the main folder and "missing" the ( empty ) component.mk file itself has stopped the compile. that have me let puzzled after i saw my mistake to forget to create an empty file named component.mk in the main
but ok, txs
proposal:
if file is missing - ( check for existence )
not
undefined reference to app_main'
perhabs better
"file component.mk in the main is missing"
then it is more clear to me whats wrong ( was forget )
proposal:
check existence component.mk before compile proc. start
if one is missing, give an info ...
3 years after and I can't agree more with this proposal
@weshouman The CMake build system we introduced in ESP-IDF V4.0 does this. If there's a directory in the component search patch with no CMakeLists.txt file (the equivalent of component.mk) then it will log a line like
-- Component directory /path/to/direcctory does not contain a CMakeLists.txt file. No component will be added
Most helpful comment
Hi Angus
sry for this action.
usually i create the "empty" component.mk file in the main folder.
but in this example i have forget to cpy the empty file...
and the undefined mistake comes.
Please - can you check this:
if we have no File: component.mk
in the main, then the undefined mistake comes
if we have a File: component.mk
in the main, then compile is ok
but i think this is not ok?
the file in hello_world is empty ( only coments ) :
but if this file is missed, then undefined mistake comes for app_main()
## "main" pseudo-component makefile.##(Uses default behaviour of compiling all source files in directory, adding 'include' to include path.)