Можем ли мы добавить определенный CFLAG в пакет eCos, когда включена опция cdl_option? - PullRequest
0 голосов
/ 10 ноября 2010

Скажем, у нас есть пакет с именем 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 ...

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

Спасибо!

1 Ответ

0 голосов
/ 10 мая 2011

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

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

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

...