Вдохновленный @fuz, возможно, мы можем написать #pragma message
в отдельном файле .c
. Вот пример:
/* config.h */
#ifndef CONFIG_H
#define CONFIG_H
#define CONFIG_OPTION_A
#define CONFIG_OPTION_B
#endif /* CONFIG_H */
Записывайте сообщения в файл .c
:
/* config_msg.c */
#include "config.h"
#ifdef CONFIG_OPTION_A
#pragma message "Config option A is enabled!"
#endif
#ifdef CONFIG_OPTION_C
#pragma message "Config option C is enabled!"
#endif
Наконец, добавьте зависимость компиляции в Makefile (то есть config_msg.o
):
/* Makefile */
.PHONY: all
%.o: %.c
gcc -c -o $@ $<
config_msg.o: config_msg.c config.h
gcc -c -o $@ $<
all: main.o config_msg.o
gcc -o main $^
Пока config.h
изменяется, config_msg.o
будет перекомпилироваться и печатать содержащиеся в нем сообщения. (Добавление config.h
к зависимостям Rule config_msg.o
необходимо. И это также зависит от более высокого приоритета Rule config_msg.o
, чем Rule %.o
. Поправьте меня, если я ошибаюсь.)
Вот тест:
$ make all
gcc -c -o main.o main.c
gcc -c -o config_msg.o config_msg.c
config_msg.c:4:9: warning: Config option A is enabled! [-W#pragma-messages]
#pragma message "Config option A is enabled!"
^
1 warning generated.
gcc -o main main.o config_msg.o
$ make all
gcc -o main main.o config_msg.o
Выполнить после добавления #define CONFIG_OPTION_C
к config.h
:
$ make all
gcc -c -o config_msg.o config_msg.c
config_msg.c:4:9: warning: Config option A is enabled! [-W#pragma-messages]
#pragma message "Config option A is enabled!"
^
config_msg.c:8:9: warning: Config option C is enabled! [-W#pragma-messages]
#pragma message "Config option C is enabled!"
^
2 warnings generated.
gcc -o main main.o config_msg.o
Я не думаю, что это идеальное решение. Но надеюсь поможет. :)
person
mkvoya
schedule
20.12.2016
#pragma message
- person Hatted Rooster   schedule 08.06.2016