2016-03-22 3 views
1

Давайте предположим, что я хочу, преимущество, предоставляемое неявных правила, а также появляется сообщение о ходе работы в виде:Использования неявных правил при отображении пользовательских сообщений

Compiling [main.cpp] 
(...) 
Linking... 

Запись %.o: %.cpp правила с сообщением заменяет неявный.
И написание всего правила явно поражает цель использования неявных правил.
Итак, любые предложения?

PS: Если это невозможно сделать, сделайте это нормально.
PPS: NO Cmake
PPPS: NO AUTOFOOLS

+0

Ответ на этот вопрос (http://stackoverflow.com/q/24820594/258523) достаточно близко к тому, что вы хотите? Возможно, вы сможете настроить его, чтобы выводить сообщение только с помощью умного использования '$ (eval)', если это необходимо. –

+0

@ EtanReisner Close, но это дало мне представление о том, как это сделать. – bit2shift

+0

Вы можете добавить вещи к 'COMPILE.cpp', чтобы сделать часть того, что вы хотите, но получение' $ @ 'там правильно ускользало от меня в некоторых быстрых попытках. Мне любопытно посмотреть, что вы придумали. –

ответ

0

Поскольку $(CXX) используется для компиляции C++ источников и $(CC) используется для связывания объектов вместе, я может добавить echo к обоим.

CC = @echo "Linking..."; g++ 
CXX = @echo "Compiling [$<]"; g++ 

Это даст желаемые результаты.

+0

'$ (CC)' используется в других местах, хотя это не всегда будет работать правильно. –

+0

@EtanReisner Я знаю, он также используется для компиляции файлов C, но я только работаю с C++ на этом этапе, так что он соответствует моим потребностям. – bit2shift

0

Что-то вроде этого:

%.o: %.cpp 
    @echo compiling $< 
    $(CC) -c $(CXXFLAGS) $(DEFS) $< -o [email protected] 
+0

«И написание всего правила явно поражает цель использования неявных правил». Вы не правильно прочитали мой вопрос. – bit2shift

+0

О, извините..ий, вам, например, нужен обходной путь, как файл bash. – Joel

Смежные вопросы