Make找不到源文件,如果直接运行cc则可以工作

时间:2019-05-24 22:53:09

标签: c makefile freebsd

我有一个问题,即使直接运行命令成功,make也会失败:

$ make
cc -o ./bin/cams cams.c
cc: error: no such file or directory: 'cams.c'
cc: error: no input files
*** Error code 1

Stop.
make: stopped in /usr/psrc/cams

尽管

cc -o ./bin/cams cams.c

成功

这是我的Makefile

SHELL = /usr/local/bin/bash
cams: 
    cc -o ./bin/cams cams.c
clean:
    rm ./bin/cams

2 个答案:

答案 0 :(得分:1)

我们需要查看您正在使用的Makefile才能进行故障排除。假设您只有一个文件并且不需要指定任何其他包含位置,则以下Makefile应该可以工作。

CC=cc
SOURCES=cams.c
OBJECTS=$(SOURCES:.c=.o)
EXECUTABLE=bin/cams

all: $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS) 
    $(CC) $(OBJECTS) -o $@

%.o : %.cpp
    $(CC) -c $< -o $@

clean:
    rm -fv $(OBJECTS) $(EXECUTABLE)

要包括所有其他写入的c文件,只需将文件名附加到源代码的末尾。确保使用制表符代替空格。请查看此Linux手册页以获取更多信息make(1p)

答案 1 :(得分:0)

原来要怪目录名称'obj'的存在