make: -c: команда не найдена - PullRequest
       1

make: -c: команда не найдена

2 голосов
/ 24 сентября 2011

Прежде всего, я пытаюсь привыкнуть к make-файлам, но все же я новичок в этом.Следующий файл должен, во-первых, скомпилировать все ./src/*.cpp файлы в ./src/*.o (где сохраняется имя файла), а затем завершить компиляцию с simulation.cpp и связать все вместе.Теперь make возвращает сообщение об ошибке:

make: -c: Command not found

Я буквально понятия не имею, как поступить!Будет ли подстановочный знак работать даже так, как нужно?Большое спасибо за ваши усилия!

#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 ]

4 голосов
/ 24 сентября 2011

Вы обманываете make с помощью переменной SHELL, она видит пустую, поскольку это просто комментарий.

Измените

SHELL := #!/bin/bash

на

SHELL := /bin/bash
4 голосов
/ 24 сентября 2011

Эта строка:

SHELL := #!/bin/bash

неверна.

Ваш make-файл должен работать безупречно, если вы вообще пропустите эту строку.Если вам что-то там нужно, попробуйте

SHELL := /bin/bash
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...