умные зависимости компоновщика - PullRequest
0 голосов
/ 09 марта 2012

Мой проект скомпилирован с make и недавно добавил библиотеку наддува для модульного тестирования.

Структура каталогов выглядит следующим образом:

Project/
  main.cpp
  main.hpp
  Makefile
  sources/
    classA.cpp
  includes/
    classA.hpp
  objects/
  test/
    Makefile
    unit_test_classA.cpp

В папке Project каталог Irun:

$ make test

Все отлично работает, за исключением того, что я не знаю, как сказать, чтобы заставить работать test/Makefile и искать зависимости в ../object dir автоматически.

I 'я пытаюсь сделать универсальный make-файл, потому что я строю много объектов и хочу разделить свою разработку и тестирование.


вопрос: мне нужно правило make-файла для автоматического просмотра файлов .o в определенном каталоге


Makefiles

# Project/Makefile

BUILD = snake

LDFLAGS =
LDLIBS = -lsfml-graphics -lsfml-window -lsfml-audio -lsfml-system
CXXFLAGS = -Wall -I./includes
RM = rm -rf

OBJ_DIR = objects/
SRC_DIR = sources/

OBJS = $(patsubst $(SRC_DIR)%, \
    $(OBJ_DIR)%, \
    $(patsubst %.cpp,%.o,$(wildcard $(SRC_DIR)*.cpp)))

OBJECTS =  main.o $(OBJS)

all: $(BUILD)

test:
    cd test; $(MAKE)

$(BUILD): $(OBJECTS)
    $(CXX) $(LDFLAGS) $(LDLIBS) $(OBJECTS) -o $@

$(OBJ_DIR)%.o: $(SRC_DIR)%.cpp $(OBJ_DIR)
    $(CXX) $(CXXFLAGS) -c $< -o $@

clean:
    $(RM) $(OBJECTS) $(OBJ_DIR)
    mkdir $(OBJ_DIR)

.PHONY: test

# Project/test/Makefile

BUILD = boost_test

LDFLAGS =
LDLIBS = -lboost_unit_test_framework
CXXFLAGS = -Wall -I./../includes
RM = rm -rf

OBJS = $(patsubst %.cpp,%.o,$(wildcard *.cpp))

OBJECTS = $(OBJS)

all: clean $(BUILD)
    ./$(BUILD)

$(BUILD): $(OBJECTS)
    $(CXX) $(LDFLAGS) $(LDLIBS) $(OBJECTS) -o $@

%.o: %.cpp
    $(CXX) $(CXXFLAGS) -c $< -o $@

clean:
    $(RM) $(OBJECTS)

.PHONY: $(BUILD)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...