Я сделал минимальный файл c (main.c)
#if !defined(MBEDTLS_CONFIG_FILE)
#error "not defined"
#else
#include MBEDTLS_CONFIG_FILE
#endif
int main(void)
{
while(1);
}
теперь вызов arm-none-eabi-gcc main.c дает error: #error "no defined", и это нормально.
Но вызов arm-none-eabi-gcc main.c -DMBEDTLS_CONFIG_FILE = "test.h" дает error: #include expects "FILENAME" or <FILENAME>, поэтому он определен, но не соответствует ожидаемому значению.
Какой правильный синтаксис? (контекст: это работает из IDE, но я хочу перейти на cmake)





Это оболочка, который удаляет кавычки из строки, которую вы передаете. Вам нужно избегать кавычек, чтобы сохранить их в макросе:
arm-none-eabi-gcc main.c -DMBEDTLS_CONFIG_FILE=\"test.h\"
Также попробуйте -DMBEDTLS_CONFIG_FILE='"test.h"', который может быть более приемлемым для cmake.
работающий. И для cmake мне нужно было избежать escape-символа и двойной кавычки. Спасибо