Можно ли поместить в make файл эквивалент #define VAR
(в программе C), чтобы можно было скомпилировать часть какой-либо программы?
Можно ли определить макрос C в файле makefile?
Ответ 1
Соответственно cc
manpage на linux
-D name=definition
The contents of definition are tokenized and processed as if they appeared during translation phase three in a #define directive. In
particular, the definition will be truncated by embedded newline characters.
Ответ 2
Отредактируйте Makefile
, чтобы показать
CFLAGS = -D VAR1 -D VAR2 = * что-то *
Если вы используете правила по умолчанию в Makefile, это должно работать автоматически. Если вы этого не сделаете, и явным образом вызываю компилятор C, просто убедитесь, что вы пишете что-то по строкам
$(CC) $(CFLAGS) -c -o [email protected]$<
Еще более мило, если факт, что CFLAGS=...
выше может быть использован в командной строке, а не написан в Makefile (прочитайте страницу руководства man(1)
); это позволяет легко реконфигурировать ваши параметры компиляции в последний момент, но параметры не будут сохранены.
Лучшие практики включают использование CPPFLAGS
вместо CFLAGS
и использование +=
вместо =
; однако поддержка этих функций не такая универсальная, как выше, и зависит от вашей системы make.
Ответ 3
Да.
Большинство компиляторов поддерживают параметры командной строки для указания # define. Для Visual С++ это /D.