VPATH в выпуске make-файла - PullRequest
1 голос
/ 08 апреля 2010

У меня есть вопрос, связанный с VPATH.Я играю с файлами make и переменной VPATH.По сути, я беру исходные файлы из нескольких разных мест (указанных в VPATH) и пытаюсь скомпилировать их в другой каталог ($ CURDIR / OBJ /), используя просто список желаемых .o-файлов.

Могу ли я создавать файлы .o в любом другом каталоге, кроме текущего каталога, при использовании VPATH ??

1 Ответ

1 голос
/ 08 апреля 2010

Ну, да, но ваш вопрос не совсем правильный.

Make хорош в поиске вещей там и использовании их для создания вещей здесь , ноА не наоборот.VPATH и vpath сообщают make, где искать то, что им нужно, но нет соответствующей директивы для размещения вещей, которые он делает, где-то, кроме текущего каталога.

Если вы хотите, чтобы ваши объектные файлы (OBJECTS = ant.o bee.o) чтобы перейти в другой каталог, например $ (OBJDIR), есть три основных способа сделать это.

  1. Создайте их здесь и переместите вручную (этот почти наверняка поможет вамв беде):
    $(OBJECTS): %.o: %.c
        gcc -c $&lt -o $@
        mv $@ $(OBJDIR)
    
    или, что то же самое, отправляйтесь туда и постройте их:
    $(OBJECTS): %.o: %.c
        cd $(OBJDIR) ; gcc -c $&lt -o $@
    
  2. Укажите путь и постройте их на месте (вероятно, лучший для новичка):
    FULLOBJECTS = $(addprefix $(OBJDIR)/,$(OBJECTS))
    $(FULLOBJECTS): $(OBJDIR)/%.o: %.c
        gcc -c $&lt -o $@
    
  3. Call Make там (мощный(но очень сложно):
    $(OBJECTS):
        $(MAKE) -C $(OBJDIR) $@
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...