g++
позволяет использовать -DMACRO_NAME=MACRO_VALUE
для предоставления значений макросов в командной строке. Предположительно, другие компиляторы имеют аналогичные функции.
Это эквивалентно наличию
#define MACRO_NAME MACRO_VALUE
вверху каждого обрабатываемого файла.
Оставление части =MACRO_VALUE
эквивалентно простой #define MACRO_NAME
.
Так что теперь все, что вам нужно сделать, это получить make
, чтобы отслеживать конечный пункт назначения для каждого файла, который вы компилируете (что может быть или не быть тривиальным, зависит от того, что вы делаете ...) .
Вы также можете взглянуть на операторы #
stringization и ##
tokenization в препроцессоре c . Они могут сэкономить вам немного работы здесь ...