Значение -DHAVE_CONFIG_H в make файлах

Я начинаю узнавать о make файлах. Глядя на результат, я вижу много вхождений:

g++ -DHAVE_CONFIG_H -I ...

что такое -DHAVE_CONFIG_H точно? Какова функция этой опции компиляции?

Ответ 1

Все, что -DHAVE_CONFIG_H делает, это определить токен перед процессором HAVE_CONFIG_H точно так же, как если бы вы имели #define HAVE_CONFIG_H в начале каждого из ваших исходных файлов.

Что касается того, для чего он используется, это полностью зависит от остальной части исходного файла (и всего, что включает в себя). Это то, где вы должны искать свой эффект.

Похоже, что это может означать, что заголовочный файл config.h доступен и должен быть включен, и в этом случае вы, вероятно, найдете следующую последовательность в исходных файлах:

#ifdef HAVE_CONFIG_H
    #include "config.h"
#endif

который будет включать заголовочный файл, когда вы говорите, что он доступен. Однако это предположение с моей стороны и отнюдь не точный эффект, именно то, что я использовал бы для этого символа препроцессора.