Makefile необычное поведение
Я написал файл make для простой программы cpp, содержащей cout заявления.
#This a makefile for compiling the hello world cpp program.
CC=clang++
all: run test.o
run: .cpp=.o
.PHONY: clean
clean:
rm -rf *.o run
но это не компилирует мой test.cpp. Из учебника я взял эту идею, что make достаточно умен для компиляции зависимости и цели, если ничего не указано.
Что не так?
Благодарю.
1 ответ
В вашем случае нет необходимости в make-файле, так как make имеет встроенные правила, которые знают, как скомпилировать простую программу.
Простой способ
Создайте тестовую программу hello world с именем test.cpp.
#include <iostream> using namespace std; int main() { cout << "Hello, World! << endl; return 0; }Изменить каталоги с
cdв каталог, содержащий test.cpp и запуститьmake,make CC=g++ testДля запуска вышеуказанной команды
makeа такжеg++должен быть установлен.Запустите исполняемый файл теста.
./testРезультаты
./test:Hello, World!
Трудный путь
Создайте тестовую программу hello world с именем test.cpp, так же, как и простым способом.
Изменить каталоги с
cdв каталог, содержащий test.cpp и создайте make-файл с именем makefile1.CC = clang++ CFLAGS = -g RM = rm -f default: all all: Hello Hello: test.cpp $(CC) $(CFLAGS) -o Hello test.cpp clean veryclean: $(RM) HelloДве строки с отступом должны начинаться с табуляции, а не с 4 пробелов. Приведенный выше make-файл также будет работать правильно, если вы замените
clang++сg++,Бежать
make,make -f makefile1Для запуска вышеуказанной команды
makeclangа такжеg++должен быть установлен.Запустите исполняемый файл Hello.
./HelloРезультаты
./Hello:Hello, World!