Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Makefile Помощь  (Прочитано 673 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн DjEyal

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Makefile Помощь
« : 25 Октябрь 2011, 23:05:37 »
написать программу - makefile для сборки 20 компонентов, содержащихся каждый в своей директории . в обязательном порядке программа должна выполнять следующие цели:
1. компиляция (т.е. самая главная цель - make).
2. make-clean
3. make-install.
в качестве компонентов можно использовать один и тот же файл на СИ ("hello, world!"), но раскопированный по 10-20 разным папкам.

Кто может помочь? Гуглил, у вас на форуме уже читал про мэйк файлы, но часа три бьюсь - ничего не выходит.

Оффлайн ZwS

  • Редактор
  • Старожил
  • *
  • Сообщений: 1687
    • Просмотр профиля
Re: Makefile Помощь
« Ответ #1 : 25 Октябрь 2011, 23:14:16 »
Dell Inspiron One 2330 | Intel+Radeon HD7650A | 8GB RAM | Ubuntu GNOME 17.10

Оффлайн DjEyal

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Makefile Помощь
« Ответ #2 : 25 Октябрь 2011, 23:17:01 »
Это прочитал в самом начале, но не нашел там примеров, там лишь понял как написать такой скрипт через scons , а через make не получается.

Оффлайн ZwS

  • Редактор
  • Старожил
  • *
  • Сообщений: 1687
    • Просмотр профиля
Re: Makefile Помощь
« Ответ #3 : 25 Октябрь 2011, 23:23:50 »
Цитировать
TARGET=$(shell basename `pwd`)
SOURCES=$(wildcard *.cpp)
OBJECTS=$(SOURCES:%.cpp=%.o)

all: $(TARGET)

$(OBJECTS): $(SOURCES)

$(TARGET): $(OBJECTS)
        $(CXX) -o $(TARGET) $(LDFLAGS) $(OBJECTS) $(LOADLIBES) $(LDLIBS)

clean:
        $(RM) $(OBJECTS) $(TARGET)

.PHONY: all clean
Dell Inspiron One 2330 | Intel+Radeon HD7650A | 8GB RAM | Ubuntu GNOME 17.10

Оффлайн DjEyal

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Makefile Помощь
« Ответ #4 : 25 Октябрь 2011, 23:31:25 »
Да, это я видел, но этот makefile компилирует только файлы в папке , где он находится. А мне нужно, к примеру у меня папки 1- 20 , и в каждой папке по одному .cpp или просто сишный, не столь важно, файлу, то как мне его сделать? допустим все папки находятся в одном каталоге

Оффлайн ZwS

  • Редактор
  • Старожил
  • *
  • Сообщений: 1687
    • Просмотр профиля
Re: Makefile Помощь
« Ответ #5 : 25 Октябрь 2011, 23:37:04 »
SOURCES=$(wildcard *.cpp)
OBJECTS=$(SOURCES:%.cpp=%.o)

all: $(TARGET)

$(OBJECTS): $(SOURCES)

$(TARGET): $(OBJECTS)
        $(CXX) -o ./папка1 $(LDFLAGS) $(OBJECTS) $(LOADLIBES) $(LDLIBS)
        $(CXX) -o ./папка2 $(LDFLAGS) $(OBJECTS) $(LOADLIBES) $(LDLIBS)
        $(CXX) -o ./папка3 $(LDFLAGS) $(OBJECTS) $(LOADLIBES) $(LDLIBS)

clean:
        $(RM) $(OBJECTS) $(TARGET)

.PHONY: all clean
както так
Dell Inspiron One 2330 | Intel+Radeon HD7650A | 8GB RAM | Ubuntu GNOME 17.10

Оффлайн DjEyal

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Makefile Помощь
« Ответ #6 : 25 Октябрь 2011, 23:42:09 »
но тогда all: $(TARGET) не имеет смысла..

Оффлайн ZwS

  • Редактор
  • Старожил
  • *
  • Сообщений: 1687
    • Просмотр профиля
Re: Makefile Помощь
« Ответ #7 : 25 Октябрь 2011, 23:47:20 »
но тогда all: $(TARGET) не имеет смысла..
ну удали тогда это правио. чего тут такого? оно же и такпустое и ничего не делает
Dell Inspiron One 2330 | Intel+Radeon HD7650A | 8GB RAM | Ubuntu GNOME 17.10

Оффлайн DjEyal

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Makefile Помощь
« Ответ #8 : 25 Октябрь 2011, 23:53:37 »
Ничего не получается... Пишет rm-f , хотя в каждой папке лежит по HelloWorld'y...  наверное я что-то недопонимаю

Пользователь решил продолжить мысль 26 Октябрь 2011, 00:37:57:
Никто не подскажет ?

Пользователь решил продолжить мысль 26 Октябрь 2011, 01:28:39:
SOURCES=$(wildcard *.cpp)
OBJECTS=$(SOURCES:%.cpp=%.o)

Менял, но что-то не получается ничего ( помогите, пожалуйста
« Последнее редактирование: 26 Октябрь 2011, 01:28:39 от DjEyal »

 

Страница сгенерирована за 0.07 секунд. Запросов: 23.