Ошибка Makefile новичка GNU - PullRequest
       0

Ошибка Makefile новичка GNU

0 голосов
/ 29 января 2011

Это моя первая попытка создать Makefile по необходимости из предыдущего поста .

В любом случае вот код

SortLab.exe : SelectionSort.o Main.o  
        g++ -o $@ $^  
SelectionSort.o : SelectionSort.cpp SelectionSort.h  
Main.o : Main.cpp  

#-------------------------------------------------------------

run: SortLab.exe  
        ./SortLab.exe  

clean:  
    rm -f *.o  
    rm -f *.exe  

build: clean SortLab.exe  

%.o: %.cpp  
    g++ -c $<  

Я намереваюсь SelectionSort.cpp & SelectionSort.h сформировать объектный файл и Main.cpp, чтобы сформировать его собственный объектный файл. Затем, наконец, создайте исполняемый файл. Main.cpp зависит от SelectionSort.cpp, где я могу пойти не так?

Также, где я могу найти, что означают различные команды GNU, -o -c и такие

1 Ответ

2 голосов
/ 29 января 2011
  1. Вам не нужно определять правило %.o: %.cpp самостоятельно, Make знает, как скомпилировать C ++.
  2. Отступ с табуляцией, а не пробелами; Марка чувствительна к разнице.
  3. Каждый объектный файл должен зависеть от заголовков, включенных в исходные файлы, от которых он зависит. Вам, вероятно, нужно Main.o : Main.cpp SelectionSort.h.
  4. build не должен зависеть от clean, он побеждает одну из основных функций Make (выборочная перекомпиляция при изменении файлов).
  5. Если вы сделаете build первой целью, вы можете запустить Make без цели, чтобы получить полную компиляцию. Обычно называют основную цель all.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...