В моем c/c ++ файлы, есть несколько #define. Как пример:
#ifdef LIBVNCSERVER_HAVE_LIBZ
/* some code */
#ifdef LIBVNCSERVER_HAVE_LIBJPEG
/* some more code */
Не могли бы Вы сказать мне, как я могу изменить свой Makefile.in так, чтобы у меня были те #define во ВСЕХ файлах во время компиляции?
Спасибо.
-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)
Добавьте линию ниже, в ваш 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, $) Определяет))) .
Не изменяйте свой Makefile.in. (и рассмотрите возможность использования Automake и преобразования вашего Makefile.in в гораздо более простой Makefile.am). Весь смысл этих #defines состоит в том, чтобы позволить скрипту configure определить их в config.h, а ваши исходные файлы должны #include