Что это значит @ CPPFLAGS @ в Makefile.in? - PullRequest
0 голосов
/ 31 января 2020

У меня есть Makefile.in файл, который генерирует Makefile.am по конфигурации. После этого с помощью automake Makefile.am создайте Makefile .

Теперь я хочу добавить определение в сгенерированный Makefile. Проблема в том, что в сгенерированном Makefile я нашел список флагов в переменной CPPFLAGS , но в определении CPPFLAGS в Makefile.in я нашел только строку, записываемую следующим образом:

CPPFLAGS = @CPPFLAGS@

Что это значит @CPPFLAGS@? И как я могу установить новый флаг в сгенерированном Makefile?

Ответы [ 2 ]

1 голос
/ 31 января 2020

CPPFLAGS расшифровывается как C Pre-Processor flags.

Вы можете установить его как переменную окружения или через командную строку:

CPPFLAGS="-g -Wall -O0" automake

или

CPPFLAGS="-g -Wall -O0" make

Из GNU Make manual:

CPPFLAGS

Extra flags to give to the C preprocessor and programs that use it (the C and Fortran compilers).
0 голосов
/ 31 января 2020

Строка @CPPFLAGS@ расширяется сценарием конфигурирования до значения CPPFLAGS во время выполнения configure. Другими словами, если вы запустите configure CPPFLAGS=foo, то @CPPFLAGS@ будет развернуто до строки foo.

Automake был запущен задолго до вызова configure. Все, что удалось сделать, это добавить строку @CPPFLAGS@ в Makefile.in, когда он создавал этот файл.

Как сопровождающий проекта, вам не следует редактировать эти значения. Это механизм, с помощью которого пользователь может добавлять флаги в сборку во время настройки.

Если вы хотите добавить флаги, вам следует присвоить AM_CPPFLAGS в Makefile.am. Но скорее всего, вы не хотите этого делать. Трудно сказать, и будет зависеть от того, какие флаги вы хотите добавить.

...