Как я могу определить #define в моем Делать файлы

В моем c/c ++ файлы, есть несколько #define. Как пример:

#ifdef LIBVNCSERVER_HAVE_LIBZ
  /* some code */
#ifdef LIBVNCSERVER_HAVE_LIBJPEG
  /* some more code */

Не могли бы Вы сказать мне, как я могу изменить свой Makefile.in так, чтобы у меня были те #define во ВСЕХ файлах во время компиляции?

Спасибо.

12
задан Anycorn 26 January 2010 в 01:18
поделиться

3 ответа

-DLIBVNCSERVER_HAVE_LIBZ -DLIBVNCSERVER_HAVE_LIBJPEG

Вы можете пройти теми в CPPFLAGS ,

CPPFLAGS = -DLIBVNCSERVER_HAVE_LIBZ -DLIBVNCSERVER_HAVE_LIBJPEG

или сделать новую переменную

CUSTOMDEFINES = -DLIBVNCSERVER_HAVE_LIBZ -DLIBVNCSERVER_HAVE_LIBJPEG

и передавать его на CPPFLAGS = -DEXISTINGFLAGS $ (CustomDefines)

, которые, наконец, перейдут GCC / G ++ -D ...

$(CC) $(CPPFLAGS)
19
ответ дан 2 December 2019 в 07:02
поделиться

Добавьте линию ниже, в ваш makefile:

DEFINES=LIBVNCSERVER_HAVE_LIBZ LIBVNCSERVER_HAVE_LIBJPEG
...
... further on in your makefile on the line where it says ....
...
    $(cc) ($(addprefix -D, $(DEFINES))) .....
...
...

Это должно служить в качестве примера, вы только добавляете другого определения в определения переменную, которые ссылаются на строку, как показано на рисунке (CC) -D $ (определяет) , в котором Make автоматически расширит переменную и компилировать тех, которые являются #ifdef d.

Благодаря r Samuel Klatchko для указывает на небольшой амиссию ... Это специально для Make GNU, Вы можете использовать AddPrefix, сделающую правильно сделать это ($ (addprefix -d, $) Определяет))) .

3
ответ дан 2 December 2019 в 07:02
поделиться

Не изменяйте свой Makefile.in. (и рассмотрите возможность использования Automake и преобразования вашего Makefile.in в гораздо более простой Makefile.am). Весь смысл этих #defines состоит в том, чтобы позволить скрипту configure определить их в config.h, а ваши исходные файлы должны #include . Если вы обслуживаете пакет, вам нужно будет написать тесты в configure.ac, чтобы определить, установлена ​​ли в используемой системе libvncserver с поддержкой jpeg и zlib. Если вы изменяете Makefile.in, чтобы всегда определять их, то вы делаете предположение, что ваш код создается только на машинах, на которых эти функции доступны. Если вы сделаете это предположение, вам все равно следует добавить проверки в configure.ac, чтобы подтвердить это, и дать скрипту настройки сбой, если зависимости не соблюдены.

0
ответ дан 2 December 2019 в 07:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: