如何使用Zephyr检查Kconfig字符串是否为空?

问题描述

给出此Kconfig

config MY_STR
    string "A string"

伪指令#if defined(CONfig_MY_STR)对于认的空字符串将评估为true。

如何在编译时检查 CONfig_MY_STR 是否为空字符串?像下面这样使用第二个布尔值(例如 CONfig_USE_MY_STR )是更好的做法吗?

config MY_STR
    string "A string"
    depends on USE_MY_STR

config USE_MY_STR
    bool "Enable MY_STR"

解决方法

由于string symbols implicitly default to the empty stringBUILD_ASSERT()可用于执行编译时检查:

BUILD_ASSERT(1 != sizeof(CONFIG_SOMEPROPERTY),"SOMEPROPERTY required");

并在构建过程中将其传递给

west build -- -DCONFIG_SOMEPROPERTY=\"1.0\" [other arguments]