Есть ли способ включить заголовок в каждую единицу компиляции без изменения каждого исходного файла? - PullRequest
3 голосов
/ 21 февраля 2009

Учитывая следующее:

  • большой проект с тысячами исходных файлов на C ++
  • нет общего заголовочного файла (нет ни одного заголовка, включенного в каждый исходный файл)
  • указанный проект скомпилирован с g ++ и управляется make

Есть ли способ включить определение (например, макрос) в каждую единицу компиляции без изменения каждого исходного файла для добавления нового заголовочного файла?

Ответы [ 2 ]

15 голосов
/ 21 февраля 2009

От man gcc:

-включить файл

Обрабатывать файл так, как если бы "#include" file "" отображалось в первой строке первичный исходный файл. Тем не менее, первый каталог искал файл - это рабочий каталог препроцессора, а не каталог содержащий основной исходный файл. Если не найден там, это поиск в оставшейся части цепочки поиска "#include" ... "" как обычно. Если заданы несколько параметров включения, файлы включаются в порядок их появления в командной строке.

9 голосов
/ 21 февраля 2009

Это можно сделать с помощью параметра командной строки gcc "-D".

Пример: gcc -ansi -Wall -Dblah='mymacrohere()' blah.cpp

См. Также: Руководство по GCC, параметры командной строки, параметры препроцессора

...