2 years ago
#40686
Aeropagz
Pass variable from command line into C code with CMake
I need some help with an esp-idf project. I want to assign a custom id to my esp32 during flash process. I found a way to pass variables into C code with CMake here. But it is not working.
My CMakeList:
cmake_minimum_required(VERSION 3.5)
set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/common_components/qrcode)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(app-template)
set(MY_CACHE_VARIABLE "1337" CACHE STRING "Gernerated Chip ID")
add_definitions( -DCUSTOM_CHIP_ID=$CACHE{MY_CACHE_VARIABLE} )
In code:
printf("%s\n", CUSTOM_CHIP_ID);
Build commmand:
idf.py flash -D MY_CACHE_VARIABLE="11111"
Error in build:
Executing action: all (aliases: build)
Running ninja in directory c:\users\cutie\documents\projects\kicker\esp32\firmwarev2\build
Executing "ninja all"...
[0/1] Re-running CMake...
-- ccache will be used for faster recompilation
-- Building ESP-IDF components for target esp32
-- Project sdkconfig file C:/Users/cutie/Documents/Projects/kicker/esp32/firmwarev2/sdkconfig
Loading defaults file C:/Users/cutie/Documents/Projects/kicker/esp32/firmwarev2/sdkconfig.defaults...
-- Could NOT find Perl (missing: PERL_EXECUTABLE)
-- App "app-template" version: f013054-dirty
-- Adding linker script C:/tools/esp-idf/components/esp_rom/esp32/ld/esp32.rom.ld
-- Adding linker script C:/tools/esp-idf/components/esp_rom/esp32/ld/esp32.rom.api.ld
-- Adding linker script C:/tools/esp-idf/components/esp_rom/esp32/ld/esp32.rom.libgcc.ld
-- Adding linker script C:/tools/esp-idf/components/esp_rom/esp32/ld/esp32.rom.newlib-data.ld
-- Adding linker script C:/tools/esp-idf/components/esp_rom/esp32/ld/esp32.rom.syscalls.ld
-- Adding linker script C:/tools/esp-idf/components/esp_rom/esp32/ld/esp32.rom.newlib-funcs.ld
-- Adding linker script C:/tools/esp-idf/components/esp_rom/esp32/ld/esp32.rom.newlib-time.ld
-- Adding linker script C:/Users/cutie/Documents/Projects/kicker/esp32/firmwarev2/build/esp-idf/esp32/esp32_out.ld
-- Adding linker script C:/tools/esp-idf/components/esp32/ld/esp32.project.ld.in
-- Adding linker script C:/tools/esp-idf/components/esp32/ld/esp32.peripherals.ld
-- Components: app_trace app_update asio bootloader bootloader_support bt cbor cmock coap console cxx driver efuse esp-tls esp32 esp_adc_cal esp_common esp_eth esp_event esp_gdbstub esp_hid esp_http_client esp_http_server esp_https_ota esp_https_server esp_hw_support esp_ipc esp_local_ctrl esp_netif esp_pm esp_ringbuf esp_rom esp_serial_slave_link esp_system esp_timer esp_websocket_client esp_wifi espcoredump esptool_py expat fatfs freemodbus freertos hal heap idf_test jsmn json libsodium log lwip main mbedtls mdns mqtt newlib nghttp nvs_flash openssl partition_table perfmon protobuf-c protocomm pthread qrcode sdmmc soc spi_flash spiffs tcp_transport tcpip_adapter tinyusb ulp unity vfs wear_levelling wifi_provisioning wpa_supplicant xtensa
-- Component paths: C:/tools/esp-idf/components/app_trace C:/tools/esp-idf/components/app_update C:/tools/esp-idf/components/asio C:/tools/esp-idf/components/bootloader C:/tools/esp-idf/components/bootloader_support C:/tools/esp-idf/components/bt C:/tools/esp-idf/components/cbor C:/tools/esp-idf/components/cmock C:/tools/esp-idf/components/coap C:/tools/esp-idf/components/console C:/tools/esp-idf/components/cxx C:/tools/esp-idf/components/driver C:/tools/esp-idf/components/efuse C:/tools/esp-idf/components/esp-tls C:/tools/esp-idf/components/esp32 C:/tools/esp-idf/components/esp_adc_cal C:/tools/esp-idf/components/esp_common C:/tools/esp-idf/components/esp_eth C:/tools/esp-idf/components/esp_event C:/tools/esp-idf/components/esp_gdbstub C:/tools/esp-idf/components/esp_hid C:/tools/esp-idf/components/esp_http_client C:/tools/esp-idf/components/esp_http_server C:/tools/esp-idf/components/esp_https_ota C:/tools/esp-idf/components/esp_https_server C:/tools/esp-idf/components/esp_hw_support C:/tools/esp-idf/components/esp_ipc C:/tools/esp-idf/components/esp_local_ctrl C:/tools/esp-idf/components/esp_netif C:/tools/esp-idf/components/esp_pm C:/tools/esp-idf/components/esp_ringbuf C:/tools/esp-idf/components/esp_rom C:/tools/esp-idf/components/esp_serial_slave_link C:/tools/esp-idf/components/esp_system C:/tools/esp-idf/components/esp_timer C:/tools/esp-idf/components/esp_websocket_client C:/tools/esp-idf/components/esp_wifi C:/tools/esp-idf/components/espcoredump C:/tools/esp-idf/components/esptool_py C:/tools/esp-idf/components/expat C:/tools/esp-idf/components/fatfs C:/tools/esp-idf/components/freemodbus C:/tools/esp-idf/components/freertos C:/tools/esp-idf/components/hal C:/tools/esp-idf/components/heap C:/tools/esp-idf/components/idf_test C:/tools/esp-idf/components/jsmn C:/tools/esp-idf/components/json C:/tools/esp-idf/components/libsodium C:/tools/esp-idf/components/log C:/tools/esp-idf/components/lwip C:/Users/cutie/Documents/Projects/kicker/esp32/firmwarev2/main C:/tools/esp-idf/components/mbedtls C:/tools/esp-idf/components/mdns C:/tools/esp-idf/components/mqtt C:/tools/esp-idf/components/newlib C:/tools/esp-idf/components/nghttp C:/tools/esp-idf/components/nvs_flash C:/tools/esp-idf/components/openssl C:/tools/esp-idf/components/partition_table C:/tools/esp-idf/components/perfmon C:/tools/esp-idf/components/protobuf-c C:/tools/esp-idf/components/protocomm C:/tools/esp-idf/components/pthread C:/tools/esp-idf/examples/common_components/qrcode C:/tools/esp-idf/components/sdmmc C:/tools/esp-idf/components/soc C:/tools/esp-idf/components/spi_flash C:/tools/esp-idf/components/spiffs C:/tools/esp-idf/components/tcp_transport C:/tools/esp-idf/components/tcpip_adapter C:/tools/esp-idf/components/tinyusb C:/tools/esp-idf/components/ulp C:/tools/esp-idf/components/unity C:/tools/esp-idf/components/vfs C:/tools/esp-idf/components/wear_levelling C:/tools/esp-idf/components/wifi_provisioning C:/tools/esp-idf/components/wpa_supplicant C:/tools/esp-idf/components/xtensa
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/cutie/Documents/Projects/kicker/esp32/firmwarev2/build
[1/9] Performing build step for 'bootloader'
ninja: no work to do.
[2/7] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/gpio.c.obj
FAILED: esp-idf/main/CMakeFiles/__idf_main.dir/gpio.c.obj
ccache C:\Users\cutie\.espressif\tools\xtensa-esp32-elf\esp-2021r1-8.4.0\xtensa-esp32-elf\bin\xtensa-esp32-elf-gcc.exe -DHAVE_CONFIG_H -DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\" -DUNITY_INCLUDE_CONFIG_H -DWITH_POSIX -Iconfig -IC:/tools/esp-idf/components/newlib/platform_include -IC:/tools/esp-idf/components/freertos/include -IC:/tools/esp-idf/components/freertos/port/xtensa/include -IC:/tools/esp-idf/components/esp_hw_support/include -IC:/tools/esp-idf/components/esp_hw_support/port/esp32/. -IC:/tools/esp-idf/components/heap/include -IC:/tools/esp-idf/components/log/include -IC:/tools/esp-idf/components/lwip/include/apps -IC:/tools/esp-idf/components/lwip/include/apps/sntp -IC:/tools/esp-idf/components/lwip/lwip/src/include -IC:/tools/esp-idf/components/lwip/port/esp32/include -IC:/tools/esp-idf/components/lwip/port/esp32/include/arch -IC:/tools/esp-idf/components/soc/include -IC:/tools/esp-idf/components/soc/esp32/. -IC:/tools/esp-idf/components/soc/esp32/include -IC:/tools/esp-idf/components/hal/esp32/include -IC:/tools/esp-idf/components/hal/include -IC:/tools/esp-idf/components/esp_rom/include -IC:/tools/esp-idf/components/esp_rom/esp32 -IC:/tools/esp-idf/components/esp_rom/include/esp32 -IC:/tools/esp-idf/components/esp_common/include -IC:/tools/esp-idf/components/esp_system/include -IC:/tools/esp-idf/components/esp32/include -IC:/tools/esp-idf/components/driver/include -IC:/tools/esp-idf/components/driver/esp32/include -IC:/tools/esp-idf/components/esp_ringbuf/include -IC:/tools/esp-idf/components/efuse/include -IC:/tools/esp-idf/components/efuse/esp32/include -IC:/tools/esp-idf/components/xtensa/include -IC:/tools/esp-idf/components/xtensa/esp32/include -IC:/tools/esp-idf/components/espcoredump/include -IC:/tools/esp-idf/components/esp_timer/include -IC:/tools/esp-idf/components/esp_ipc/include -IC:/tools/esp-idf/components/esp_pm/include -IC:/tools/esp-idf/components/vfs/include -IC:/tools/esp-idf/components/esp_wifi/include -IC:/tools/esp-idf/components/esp_wifi/esp32/include -IC:/tools/esp-idf/components/esp_event/include -IC:/tools/esp-idf/components/esp_netif/include -IC:/tools/esp-idf/components/esp_eth/include -IC:/tools/esp-idf/components/tcpip_adapter/include -IC:/tools/esp-idf/components/app_trace/include -IC:/tools/esp-idf/components/mbedtls/port/include -IC:/tools/esp-idf/components/mbedtls/mbedtls/include -IC:/tools/esp-idf/components/mbedtls/esp_crt_bundle/include -IC:/tools/esp-idf/components/app_update/include -IC:/tools/esp-idf/components/spi_flash/include -IC:/tools/esp-idf/components/bootloader_support/include -IC:/tools/esp-idf/components/nvs_flash/include -IC:/tools/esp-idf/components/pthread/include -IC:/tools/esp-idf/components/esp_gdbstub/include -IC:/tools/esp-idf/components/esp_gdbstub/xtensa -IC:/tools/esp-idf/components/esp_gdbstub/esp32 -IC:/tools/esp-idf/components/wpa_supplicant/include -IC:/tools/esp-idf/components/wpa_supplicant/port/include -IC:/tools/esp-idf/components/wpa_supplicant/include/esp_supplicant -IC:/tools/esp-idf/components/perfmon/include -IC:/tools/esp-idf/components/asio/asio/asio/include -IC:/tools/esp-idf/components/asio/port/include -IC:/tools/esp-idf/components/bt/common/osi/include -IC:/tools/esp-idf/components/bt/include/esp32/include -IC:/tools/esp-idf/components/bt/common/api/include/api -IC:/tools/esp-idf/components/bt/common/btc/profile/esp/blufi/include -IC:/tools/esp-idf/components/bt/common/btc/profile/esp/include -IC:/tools/esp-idf/components/bt/host/nimble/nimble/porting/nimble/include -IC:/tools/esp-idf/components/bt/host/nimble/port/include -IC:/tools/esp-idf/components/bt/host/nimble/nimble/nimble/include -IC:/tools/esp-idf/components/bt/host/nimble/nimble/nimble/host/include -IC:/tools/esp-idf/components/bt/host/nimble/nimble/nimble/host/services/ans/include -IC:/tools/esp-idf/components/bt/host/nimble/nimble/nimble/host/services/bas/include -IC:/tools/esp-idf/components/bt/host/nimble/nimble/nimble/host/services/dis/include -IC:/tools/esp-idf/components/bt/host/nimble/nimble/nimble/host/services/gap/include -IC:/tools/esp-idf/components/bt/host/nimble/nimble/nimble/host/services/gatt/include -IC:/tools/esp-idf/components/bt/host/nimble/nimble/nimble/host/services/ias/include -IC:/tools/esp-idf/components/bt/host/nimble/nimble/nimble/host/services/ipss/include -IC:/tools/esp-idf/components/bt/host/nimble/nimble/nimble/host/services/lls/include -IC:/tools/esp-idf/components/bt/host/nimble/nimble/nimble/host/services/tps/include -IC:/tools/esp-idf/components/bt/host/nimble/nimble/nimble/host/util/include -IC:/tools/esp-idf/components/bt/host/nimble/nimble/nimble/host/store/ram/include -IC:/tools/esp-idf/components/bt/host/nimble/nimble/nimble/host/store/config/include -IC:/tools/esp-idf/components/bt/host/nimble/nimble/porting/npl/freertos/include -IC:/tools/esp-idf/components/bt/host/nimble/esp-hci/include -IC:/tools/esp-idf/components/cbor/port/include -IC:/tools/esp-idf/components/unity/include -IC:/tools/esp-idf/components/unity/unity/src -IC:/tools/esp-idf/components/cmock/CMock/src -IC:/tools/esp-idf/components/coap/port/include -IC:/tools/esp-idf/components/coap/port/include/coap -IC:/tools/esp-idf/components/coap/libcoap/include -IC:/tools/esp-idf/components/coap/libcoap/include/coap2 -IC:/tools/esp-idf/components/console -IC:/tools/esp-idf/components/nghttp/port/include -IC:/tools/esp-idf/components/nghttp/nghttp2/lib/includes -IC:/tools/esp-idf/components/esp-tls -IC:/tools/esp-idf/components/esp-tls/esp-tls-crypto -IC:/tools/esp-idf/components/esp_adc_cal/include -IC:/tools/esp-idf/components/esp_hid/include -IC:/tools/esp-idf/components/tcp_transport/include -IC:/tools/esp-idf/components/esp_http_client/include -IC:/tools/esp-idf/components/esp_http_server/include -IC:/tools/esp-idf/components/esp_https_ota/include -IC:/tools/esp-idf/components/protobuf-c/protobuf-c -IC:/tools/esp-idf/components/protocomm/include/common -IC:/tools/esp-idf/components/protocomm/include/security -IC:/tools/esp-idf/components/protocomm/include/transports -IC:/tools/esp-idf/components/mdns/include -IC:/tools/esp-idf/components/esp_local_ctrl/include -IC:/tools/esp-idf/components/sdmmc/include -IC:/tools/esp-idf/components/esp_serial_slave_link/include -IC:/tools/esp-idf/components/esp_websocket_client/include -IC:/tools/esp-idf/components/expat/expat/expat/lib -IC:/tools/esp-idf/components/expat/port/include -IC:/tools/esp-idf/components/wear_levelling/include -IC:/tools/esp-idf/components/fatfs/diskio -IC:/tools/esp-idf/components/fatfs/vfs -IC:/tools/esp-idf/components/fatfs/src -IC:/tools/esp-idf/components/freemodbus/common/include -IC:/tools/esp-idf/components/idf_test/include -IC:/tools/esp-idf/components/idf_test/include/esp32 -IC:/tools/esp-idf/components/jsmn/include -IC:/tools/esp-idf/components/json/cJSON -IC:/tools/esp-idf/components/libsodium/libsodium/src/libsodium/include -IC:/tools/esp-idf/components/libsodium/port_include -IC:/tools/esp-idf/components/mqtt/esp-mqtt/include -IC:/tools/esp-idf/components/openssl/include -IC:/tools/esp-idf/components/spiffs/include -IC:/tools/esp-idf/components/ulp/include -IC:/tools/esp-idf/components/wifi_provisioning/include -IC:/tools/esp-idf/examples/common_components/qrcode/include -mlongcalls -Wno-frame-address -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wextra -Wno-unused-parameter -Wno-sign-compare -ggdb -Og -fstrict-volatile-bitfields -Wno-error=unused-but-set-variable -std=gnu99 -Wno-old-style-declaration -D_GNU_SOURCE -DIDF_VER=\"v4.3.1\" -DESP_PLATFORM -MD -MT esp-idf/main/CMakeFiles/__idf_main.dir/gpio.c.obj -MF esp-idf\main\CMakeFiles\__idf_main.dir\gpio.c.obj.d -o esp-idf/main/CMakeFiles/__idf_main.dir/gpio.c.obj -c ../main/gpio.c
../main/gpio.c: In function 'gpio_task_example':
../main/gpio.c:50:19: error: 'CUSTOM_CHIP_ID' undeclared (first use in this function)
printf("%s\n", CUSTOM_CHIP_ID);
^~~~~~~~~~~~~~
../main/gpio.c:50:19: note: each undeclared identifier is reported only once for each function it appears in
ninja: build stopped: subcommand failed.
ninja failed with exit code 1
CMakeCache.txt
...
//Gernerated Chip ID
MY_CACHE_VARIABLE:STRING=11111
...
I guess I need a #define
somewhere but I don't know where and how to access the CMake var.
c
cmake
esp32
esp-idf
0 Answers
Your Answer