Я пытаюсь использовать Makefile
для управления несколькими задачами вокруг моего проекта (например, для упаковки его для распространения).Однако я не могу найти способ зависеть от конкретного имени файла вместо некоторого авто-магии.Смотрите пример:
+ $ cat Makefile
dist: ctl
echo "package it here"
+ $ tree
.
├── ctl
└── Makefile
0 directories, 2 files
+ $ make
echo "package it here"
package it here
Как видите, все работает отлично.Но он перестает работать в тот момент, когда я создаю файлы ctl.h
и ctl.c
:
+ $ touch ctl.{h,c}
+ $ make
cc ctl.c -o ctl
/usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/../../../../lib/Scrt1.o: in function `_start':
(.text+0x24): undefined reference to `main'
collect2: error: ld returned 1 exit status
make: *** [<builtin>: ctl] Error 1
+ $ tree
.
├── ctl.c
├── ctl.h
└── Makefile
0 directories, 3 files
Я предполагаю, что make
пытается быть умным и считает ctl
программой, скомпилированной из ctl.c
.Который не такой случай.Как я могу подавить это поведение?