в текущем проекте C у нас была плохая идея поместить все объектные файлы в другую папку из источника. Сначала это не усложнялось, но теперь нам нужно скомпилировать некоторые файлы в определенной папке и другие в другой.Makefile: автоматическая цель в других каталогах
arborecence выглядит следующим образом:
- objs1
- objs2
- ЦСИ
- file1.c
- file2.c
После запуска make
Я хотел бы древовидное быть изменен:
- objs1
- file1.o
- objs2
- file1.o
- file2 .o
Сначала Makefile было как:
CSRC = $(wildcard *.c)
OBJS = $(CSRC:%.c=%.o)
objs1/%.o : %.c
gcc -c -o [email protected] $<
Теперь Theres также file2.c и он не должен быть составлен в objs1, file1.o должны быть в обоих objs1 и objs2 и file2.o РЕКОМЕНДУЕМЫМ быть в objs2.
Я использую общие правила, потому что проект больше, и это действительно удобно.
Итак, у меня есть две переменные, которые содержат имя объекта, одно для objs1, другое для objs2.
Я хотел бы сделать что-то вроде
$(OBJS1): %.o %.c
Но действовать будет, как исходные файлы в objs1 и что это не так.
Итак, каким образом можно комбинировать общие правила с указанным местоположением?
Спасибо
Как 'objs1/file1.o' и' objs2/file1.o' отличаются, если они скомпилированы из того же исходного файла? Выполняются ли они по-разному? – user657267
Да, они скомпилированы как стандартный объект, а другой скомпилирован с привязкой к JNI сначала, а затем в качестве библиотеки. –