Передача C/C++ #defines к make-файлу

Я разрабатываю C/C++ с помощью Eclipse IDE. Eclipse также генерирует make-файл, который я не хочу редактировать, поскольку он будет просто перезаписан.

Я хочу использовать тот make-файл для ночной сборки в Гудзоне.

Как я передаю #defines, которые сделаны в файле проекта IDE к make-файлу? (и почему Eclipse уже не включает их в сгенерированный make-файл?)

Мне на самом деле выяснили это однажды, затем случайно перезаписал его :-( Но по крайней мере я знаю, что это может быть сделано...

31
задан Michael Donohue 20 January 2010 в 11:48
поделиться

3 ответа

Если вы работаете из командной строки, используйте

make CPPFLAGS=-DFOO

, которые будут добавлять -dfoo на все компиляции. См. Также CFLAGS, CXXFLAGS, LDFLAGS в ручном руководстве.

29
ответ дан 27 November 2019 в 22:42
поделиться

Идея, лежащая в основе грамотного программирования, заключается в уделении особого внимания документации, с кодом, просочившимся через документацию, а не комментариям, просочившимся через код.

Это существенно другая философия, и различия, такие как более длинные имена переменных, пространства имен и классы, не влияют на философию. Грамотное программирование пропагандирует значимые имена переменных.

Оно масштабируется до более крупных систем, потому что базовое отношение документации к коду масштабируется линейно с размером кода.

-121--2339103-

Для GCC используйте -D define.

OP прокомментировал ниже, что он хочет передать определение в make и передать его в GCC.

Make не допускает этого. Как правило, добавляется еще одно правило создания для добавления определений. Например, «make release» vs «make debug». Как создатель makefile вы делаете два правила и имеют определение право в файле make. Теперь, если Eclipse не помещает определения в файл макияжа для вас, я бы сказал, Eclipse сломан.

-121--2534021-

Вы можете написать небольшую программу, чтобы включить заголовки и написать фрагмент makefile, который вы включите в основной makefile (требуется GNU make).

Это довольно уродливое решение, которое требует изрядного количества взлома рук. Более элегантным было бы разобрать файл проекта и написать фрагмент makefile.

2
ответ дан 27 November 2019 в 22:42
поделиться

Идея грамотного программирования - это акцент на документации, с кодом, посыпанным через документацию, а не комментарии, посыпанные через код.

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

Это масштабируется до более крупных систем, поскольку основное соотношение документации к кодам масштабируется линейно с размером кода.

-121--2339103-

для использования GCC -D определяют.

OP прокомментировал ниже, что он хочет пройти определить, и он передает его GCC.

Сделать не допускает этого. Обычно вы просто добавляете другое правило, чтобы добавить определить. Например, «сделать релиз» против «сделать отладку». Как создатель Makefile, вы делаете два правила и имеете определение прямо в файле Make. Теперь, если Eclipse не вкладывает определить в Makefile для вас, я бы сказал, что затмение сломано.

1
ответ дан 27 November 2019 в 22:42
поделиться
Другие вопросы по тегам:

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