2010-09-01 5 views
1

Если у меня есть правило, как это в моем макияжем файле:Makefile с различными правилами для .o поколения

CC = g++ 
CFLAGS = -Wall 
COMPILE = $(CC) $(CFLAGS) -c 

src = A.cpp \ 
     main.cpp 

test_src = Test.cpp 
test = testAll 

OBJFILES := $(patsubst %.cpp,%.o,$(src)) 
TEST_OBJS := $(patsubst %.cpp,%.o,$(test_src)) 

%.o: %.cpp 
    $(COMPILE) -I UnitTest++/src -LUnitTest++/ -l UnitTest++ -o [email protected] $< 

я в конечном итоге в том числе и ссылки UnitTest ++ для не тестовых файлов, таких как главный и a.cpp Как Могу ли я сделать только классы тестов, связанные с тестовыми библиотеками?

+0

Глупый вопрос времени: если вы создаете объектные файлы, делает компилятор на самом деле вызывается компоновщик (и, следовательно, использовать библиотеки)? Может быть, если бы вы имели дело с программами. –

ответ

3

Укажите, какие файлы ваше правило применяется к:

$(TEST_OBJS): %.o: %.cpp 
    $(COMPILE) -I UnitTest++/src -LUnitTest++/ -l UnitTest++ -o [email protected] $< 
+0

gmake специфический? – dmckee

+0

@dmckee Я только что запустил его, используя gnu make. Работает. Так что не особо. – anio

+1

@anio: gmake обозначает версию GNU. Это имя часто используется для установки GNU make, когда система уже существует (по общему признанию, это не распространено в наши дни). Я только что проверил документацию для GNU make и узнал, что некоторые другие поддерживают правила шаблонов на основе%, поэтому я все еще не знаю. – dmckee

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