От: | D_Tony | ||
Дата: | 02.12.16 15:28 | ||
Оценка: |
####### Implicit rules
.SUFFIXES: .c .cpp .cc .cxx
{..\..\obj\base\debug\vs}.cpp{..\..\obj\base\debug\vs\}.obj::
$(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo..\..\obj\base\debug\vs\ @<<
$<
<<
{..\..\obj\base\debug\vs}.cc{..\..\obj\base\debug\vs\}.obj::
$(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo..\..\obj\base\debug\vs\ @<<
$<
<<
{..\..\obj\base\debug\vs}.cxx{..\..\obj\base\debug\vs\}.obj::
$(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo..\..\obj\base\debug\vs\ @<<
$<
<<
{..\..\obj\base\debug\vs}.c{..\..\obj\base\debug\vs\}.obj::
$(CC) -c $(CFLAGS) $(INCPATH) -Fo..\..\obj\base\debug\vs\ @<<
$<
<<
Возьмём для примера Makefile проект, в котором сборка осуществляется компилятором Visual C++, и она описана в makefile проекта следующим правилом:
$(CC) $(CFLAGS) $<
Здесь $(CC) вызывает cl.exe, которому передаются параметры компиляции $(CFLAGS), и наконец с помощью макроса $< осуществляется подстановка всех С\С++ файлов,
от которых зависит текущая цель сборки. Т.о. для всех файлов с исходным кодом будет вызван компилятор cl.exe с необходимыми параметрами.
Модифицируем данный сценарий таким образом, чтобы перед вызовом компилятора для каждого файла осуществлялась проверка статическим анализатором PVS-Studio:
$(PVS) --source-file $< --cl-params $(CFLAGS) $< --cfg "C:\CPP\PVS-Studio.cfg" $(CC) $(CFLAGS) $<
и зачем он?$<
--cfg