>[оверквотинг удален]
>Далее смотрим во что раскрыаются переменные $(COMPILE.cpp) и $(OUTPUT_OPTION):
>
>OUTPUT_OPTION = -o $@
>COMPILE.cpp = $(COMPILE.cc)
>
>Смотрим что есть $(COMPILE.cc):
>
>COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
>
>Т.е. Можно просто попробовать выставить CXXFLAGS или CPPFLAGS в нужное значение вот так работает:
libname = pgLog.a
objects = pgLog.o
source_dirs = src#const
CC=gcc
LIBDIR = ../lib
INCLUDESDIR=-I../include -Isrc
search_wildcards := $(addsuffix /*.cpp,$(source_dirs))
# Linking object files
all: $(objects)
ar -cr $(libpath)/$(libname) $(objects)
#VPATH = $(source_dirs)
pgLog.o: src/pgLog.cpp
gcc -fpic -c $(INCLUDESDIR) src/pgLog.cpp
# Removing the executable and the object files
clean:
rm $(libpath)/$(libname) $(objects)
echo clean: make complete
закоментарил #VPATH = $(source_dirs) ибо с этой директивой непонятно почему компилялось с такимим параметрами:
c++ -O2 -fno-strict-aliasing -pipe -c src/pgLog.cpp
и игнорировались все заданные мной.
теперь встает вопрос: как скрестить ужа и ежа. чтобы автоматический поиск шел и компиляция всех cpp файлов во всех указанных директориях. ибо очень не хочется строчки вбивать для каждого файла:
имя1.o: src/имя1.cpp
gcc -fpic -c $(INCLUDESDIR) src/имя1.cpp
имя2.o: src_bin/имя2.cpp
gcc -fpic -c $(INCLUDESDIR) src_bin/имя2.cpp
имя3.o: src_crc/имя3.cpp
gcc -fpic -c $(INCLUDESDIR) src_crc/имя3.cpp