моя проблема заключается в следующем: я хочу создать make-файл, который будет компилировать программы в нескольких каталогах, но поместит исполняемые файлы в подкаталог с именем исполняемые файлы в каждом из каталогов. У меня есть огромное количество программ для компиляции, поэтому писать правила для каждого из них кажутся утомительными. Предполагая, что мой текущий рабочий каталог Curr_dir Ниже приводится каталог корпусногоСкомпилируйте несколько программ в подкаталогах каталога и поместите исполняемые файлы в разные каталоги с помощью makefile
Curr_dir
|
|__dir1
| |__q1.c
| |__q2.c
| |__q3.c
| |__+executable
|
|__dir2
| |__q4.c
| |__q5.c
| |__q6.c
| |__+executable
|
|__Makefile
Я перечислил вниз только 2 каталогов в моем корневом каталоге, но есть несколько каталогов, содержащих 3-4 .c файлы. Теперь я хочу скомпилировать все эти файлы .c с помощью Makefile в моем корневом каталоге и поместить исполняемые файлы в соответствующие исполняемые файлы. Вот мой make-файл, который компилирует каждую из программ и генерирует исполняемый файл в том же каталоге.
CC= gcc
RM= rm -vrf
CFLAGS= -lm -g
SRCFILES =$(wildcard */*.c)
SRCDIRS= $(wildcard */)
EXECDIRS= $(SRCDIRS:%=%executables)
EXECFILES = $(SRCFILES:%.c=%)
dirs:
mkdir -p $(EXECDIRS)
all: dirs $(EXECFILES)
%: %.c
-$(CC) -o [email protected] $< $(CFLAGS)
.PHONY: clean
clean:
$(RM) $(EXECFILES) $(EXECDIRS)
Любая помощь будет принята с благодарностью.
наклоняет вы компилировать полный путь к каждому файлу, а затем использовать мв – proton
@proton: Я мог бы сделать-й но с текущим makefile, который у меня есть, я не могу думать, как это можно добиться. Я редактировал вопрос с моим кодом makefile. Пожалуйста, взгляните на это. – yabhishek
Очень просто иметь несколько исходных каталогов, просто поместите их в переменную 'VPATH', затем' make' будет искать источники в этих папках. Сложность заключается в размещении выходных файлов в нескольких каталогах. См. [GNU make documentation about VPATH] (https://www.gnu.org/software/make/manual/html_node/General-Search.html) – Tim