Можем ли мы добавить определенный CFLAG в пакет eCos, если cdl_option был включен?

Скажем, у нас есть пакет с именем CYGPKG_FOO, у которого есть cdl_option «CYGPKG_FOO_FEATURE_A_ENABLE». Я хочу, чтобы определенные флаги gcc (например, "-DFEATURE_A = 1") были добавлены к CFLAGS этого пакета, когда эта cdl_option была включена.

Но в «Руководстве по составлению компонентов eCos» сказано:

http://ecos.sourceware.org/docs-3.0/cdl-guide/build.make.html#BUILD.FLAGS

Из приведенной выше ссылки похоже, что мы не можем добавлять / удалять CFLAGS на основе выбора cdl_option ...

Итак, мой вопрос: могу ли я сделать то, что было описано в первом абзаце, и если да, то как?

Спасибо!


person xdai    schedule 10.11.2010    source источник


Ответы (1)


-DFEATURE_A=1 - это то же самое, что и запись #define FEATURE_A 1 в исходный или заголовочный файл.

Когда установлено CYGPKG_FOO_FEATURE_A_ENABLE, это приводит к установке некоторых символов препроцессора в автоматически сгенерированных включаемых файлах. После запуска ecosconfig проверьте каталог install/include/pkgconf/. Вы можете добавить дополнительные define строк в ваш CDL, чтобы определить дополнительные символы, если значения по умолчанию вам не нравятся.

Если вы хотите точно контролировать, какие значения принимают эти символы, вы можете сделать это с помощью следующей директивы cdl_option, возможно, с помощью директивы legal_values или calculated; в противном случае вы можете добавить подходящие определения в файл заголовка внутри вашего пакета, которые включают наличие или отсутствие символа препроцессора.

person crazyscot    schedule 09.05.2011