make:-c:找不到命令

时间:2011-09-23 20:40:05

标签: linux makefile

首先,我正在努力习惯于制作文件但是我对此很熟悉。以下文件应首先将所有./src/*.cpp文件编译为./src/*.o(文件名存活),然后使用simulation.cpp完成编译并将所有内容链接在一起。现在,make返回错误消息:

make: -c: Command not found

我几乎不知道如何继续! wildcard-construct是否会按照预期的方式工作?非常感谢您的努力!

#basic stuff
TRUE  = 1
FALSE = 0
SHELL := #!/bin/bash

# path names
SRCPATH   = ./src/
CLEANPATH = ./res/ \
            ./crash/

# source files.
MAIN     = simulation.cpp

OBJS     = $(wildcard $(SRCPATH)*.o)
SRCS     = $(wildcard $(SRCPATH)*.cpp)
INCLUDES = $(wildcard $(SRCPATH)*.h)

#GLOBAL MACROS PASSED TO PROGRAM!
MODEL_MRT    = $(TRUE) #if true model used is MRT else SRT
PARALLEL     = $(TRUE)
GRAVITY      = $(TRUE)


# output file name
OUT = simulation

# C++ compiler flags (-g -O2 -Wall)
CXXFLAGS   = -g -Wall -O -fopenmp
CXXDEFINES = -D MODEL=$(MODEL_MRT) -D PARALLEL=$(PARALLEL) -D GRAVITY=$(GRAVITY)

# compiler
CXX = g++

$(OUT) : $(OBJS)
        $(CXX) $(CXXFLAGS) $(MAIN) $(OBJS) $(CXXDEFINES) -o $(OUT)


$(OBJS) : $(SRCS) $(INCLUDES)
        $(CXX) $(CXXFLAGS) -c $(SRCS) -o $(OBJS)

clean : $(OUT)
        rm $(OBJS)
        rm $(CLEANPATH)/*.*

run : $(OUT) clean
        ./$(OUT)

.PHONY: clean run

2 个答案:

答案 0 :(得分:4)

这一行:

SHELL := #!/bin/bash

不正确。

如果完全放弃该行,你的makefile应该可以很好地工作。如果您确实需要某些东西,请尝试

SHELL := /bin/bash

答案 1 :(得分:4)

你正在欺骗你的SHELL变量,它看到它是空的,因为它只是一个评论。

更改

SHELL := #!/bin/bash

SHELL := /bin/bash