Рейтинг:0

как изменить makefile, который уже скомпилирован?

флаг cl

Допустим, у меня есть make-файл, который выглядит так:

все: a_functions.o b_functions.o c_functions.o d_functions.o main.o
     gcc -o все a_functions.o b_functions.o c_functions.o d_functions.o main.o
a_functions.o: a_functions.c
     gcc -c -o a_functions.o a_functions.c
b_functions.o: b_functions.c
     gcc -c -o b_functions.o b_functions.c
c_functions.o: c_functions.c
     gcc -c -o c_functions.o c_functions.c
основной.о: основной.с
     gcc -c -o main.o main.c

Я мог бы скомпилировать его с помощью команды

sudo сделать -f сделать файл

и программа работает хорошо, если я запускаю

./все

а как сделать, если я хочу добавить например чистую команду в makefile? я добавил

чистый:
     rm *.o все

в конце make-файла, но мой терминал показывает

-bash: ./clean: нет такого файла или каталога

когда я делаю ./чистый

Конечно, перекомпиляция makefile тоже не работает. Это показывает

make: «все» обновлено.

когда я делаю sudo сделать -f сделать файл

я нашел здесь Как редактировать makefile? что вы можете использовать

$ CFLAGS="-std=c99" сделать

эта команда в терминале или я могу добавить

CFLAGS=-std=c99

в моем make-файле, но они все еще отображаются

все в курсе

изображение - просто доказательство того, что модификация не сработала для меня.

введите описание изображения здесь

Рейтинг:4
флаг hr

Makefile никогда не компилируется — он интерпретируется делать команда. Когда вы бежите

делать

или более явно

сделать -f сделать файл

то по умолчанию делать строит первый цель в makefile - в данном случае это все цель. Чтобы создать цель не по умолчанию, вам нужно назвать ее в командной строке, т.е.

сделать чистым

или же

сделать -f makefile чистым

Обратите внимание, что чистый target на самом деле ничего не строит, поэтому в отличие от ./все нет такой программы ./чистый потом бежать. На самом деле, вы можете захотеть объявить чистый цель как фальшивая цель.

game lover avatar
флаг cl
благодарю вас! твой ответ мне очень помог

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.