2015-09-01 9 views
0

В настоящее время у меня есть проект тестирования Google C++, который полагается на другую программу, которая будет построена первой. В моем make-проекте тестового тестового теста google я пытаюсь получить все объектные файлы в тестируемом проекте. Так, например:Makefile, получающий все объектные файлы в каталоге

USER_OBJS = $(PROJECT_BEING_TESTED_PATH)/class1.o 
USER_OBJS = $(PROJECT_BEING_TESTED_PATH)/class2.o 
USER_OBJS = $(PROJECT_BEING_TESTED_PATH)/class3.o 

Однако всякий раз, когда есть класс добавлены или удалены в проект, который проходит проверку, то я должен вручную изменить USER_OBJS в моем Makefile. С автоматическим тестированием это становится проблемой. Кто-нибудь знает, как я могу заставить USER_OBJS просто получить все объектные файлы в тестируемом проекте? Я пробовал следующее:

USER_OBJS := $(PROJECT_BEING_TESTED_PATH)/$(wildcard *.o) 

Все еще не работает. Есть идеи?

+0

первые строки отсутствующие '+ = ', так что они не работают, как предполагалось, но в этом нет ни здесь, ни там. Переместите переменную пути * в * подстановочный знак, чтобы make мог фактически выполнить правильный glob. Это говорит о том, что это не поможет, если этот make-файл должен * строить * те '.o' файлы, так как они не будут существовать при запуске' make'. В этом случае вам нужно получить этот список из файлов * source *, которые их создают. –

+0

Я забыл добавить + = на строках выше. Если я перемещаю путь в подстановочный знак, это будет следующим: USER_OBJS: = $ ($ PATH/wildcard * .o) ?? – supraMan

+0

Скажите мне. Это куда путь по глобусу? Какую часть 'wildcard' и' * .o' вы изменяете с помощью переменной пути (обратите внимание: не '$ PATH' ваша переменная' $ (PROJECT_BEING_TESTED_PATH) ')? –

ответ

1

Правильный способ использовать "подстановочные знаки" в вашем случае должно быть:

USER_OBJS = $(wildcard $(PROJECT_BEING_TESTED_PATH)/*.o) 
1

Если вы хотите (class1.o, class2.o, class3.o), использование ...

USER_OBJS = $(wildcard $(PROJECT_BEING_TESTED_PATH)/class[1-3].o) 

Если вы хотите, чтобы все объектные файлы, использовать ...

USER_OBJS = $(wildcard $(PROJECT_BEING_TESTED_PATH)/*.o)