ОБНОВЛЕНИЕ: ошибка табуляции была исправлена.поэтому я изменяю сферу действия этой проблемы, чтобы сосредоточиться на ошибке 2. Я хотел бы оставить этот же пост, поскольку там было несколько ценных обсуждений.
Я пытаюсь запустить этот Makefile в Windows, но выдает ошибку «отсутствует разделитель».Я немного погуглил, и похоже, что эта проблема связана с наличием пробелов вместо табуляции.Я открыл файл в notepad ++, и кажется, что все вкладки расположены правильно.Есть другая проблема синтаксиса, которая выкинула бы эту ошибку?Следует отметить, что это прекрасно компилируется в Ubuntu 18.04, поэтому я не совсем уверен, в чем может быть проблема.
Код здесь:
# where the executables should be installed:
BIN = $HOME/bin
# define your compiler here:
CC = gcc
# define your copy command here:
COPY = cp
# define your remove (or delete) command here:
RM = rm -f
# suffix of object files? (o for unix, obj for MSDOS):
O = o
# suffix for executable files? (empty for unix, .exe for dos):
E =
# command line arguments for C compiler
WARN := \
-Wall \
-Wcast-align \
-Wcast-qual \
-Wmissing-declarations \
-Wmissing-prototypes \
-Wpointer-arith \
-Wstrict-prototypes \
-Wno-unused-parameter \
-Wno-unused-function \
-Wshadow \
-Wundef \
-Wwrite-strings
OPT1 = -DNDEBUG
#OPT2 = -O
CFLAGS = -g $(WARN) $(OPT1) $(OPT2)
#
# There should be no need to make changes below this line
#
TARGETS = abcml$(E) abcsim$(E) tabcfg$(E) mau2cfg$(E) cplcfg$(E) gnaw$(E) \
wgtcfg$(E)
#make all targets
all : $(TARGETS)
touch all
#target wgtcfg: Weight the configurations in a .cfg file
WGTCFG = wgtcfg.$(O) getcic.$(O) io.$(O) header.$(O) misc.$(O) zeroin.$(O)
wgtcfg$(E) : $(WGTCFG)
$(CC) $(CFLAGS) -o $@ $(WGTCFG) -lm
#target gnaw: subject an assemblage to attrition
GNAW = gnaw.$(O) getcic.$(O) io.$(O) header.$(O) misc.$(O) zeroin.$(O) \
unirand.$(O)
gnaw$(E) : $(GNAW)
$(CC) $(CFLAGS) -o $@ $(GNAW) -lm
#target cplcfg: Calculate complement of .cfg file
CPLCFG = cplcfg.$(O) getcic.$(O) io.$(O) header.$(O) misc.$(O) zeroin.$(O)
cplcfg$(E) : $(CPLCFG)
$(CC) $(CFLAGS) -o $@ $(CPLCFG) -lm
#target mau2cfg: convert .mau format to .cfg format
MAU2CFG = mau2cfg.$(O) getcic.$(O) misc.$(O) io.$(O) header.$(O) zeroin.$(O)
mau2cfg$(E) : $(MAU2CFG)
$(CC) $(CFLAGS) -o $@ $(MAU2CFG) -lm
#target abcsim: simulation program
ABCSIM = abcsim.$(O) getcic.$(O) zeroin.$(O) misc.$(O) io.$(O) unirand.$(O) \
header.$(O)
abcsim$(E) : $(ABCSIM)
$(CC) $(CFLAGS) -o $@ $(ABCSIM) -lm
#target abcml: estimation program
ABCML = abcml.$(O) io.$(O) getcic.$(O) zeroin.$(O) misc.$(O) likelihood.$(O) \
prlike.$(O) chol.$(O) amoeba.$(O) symeig.$(O) unirand.$(O) header.$(O) \
ninfomat.$(O)
abcml$(E) : $(ABCML)
$(CC) $(CFLAGS) -o $@ $(ABCML) -lm
#target tabcfg: tabulate configurations
TABCFG = tabcfg.$(O) getcic.$(O) misc.$(O) io.$(O) header.$(O) zeroin.$(O)
tabcfg$(E) : $(TABCFG)
$(CC) $(CFLAGS) -o $@ $(TABCFG) -lm
install : all
$(COPY) $(TARGETS) $(BIN)
clean :
$(RM) *.$(O) *~ all bone junk* core abcmlsrc.zip try depend $(TARGETS)
abcmlsrc.zip :
zip -l abcmlsrc LICENSE Makefile.dos Makefile.unix *.c *.h -x try.*
depend :
echo '#Automatically generated dependency info' > depend
$(CC) -M *.c >> depend
include depend
РЕДАКТИРОВАТЬ: Вот так, хорошо, такисправление ошибки в зависимом файле приводит к еще одной замечательной ошибке, которая может быть изображена здесь ниже (бит мандарина гласит: «Система не может найти указанный файл»).Исправление зависимого файла теперь позволяет правильно его компилировать с использованием WSL, но PowerShell все еще не устраивает.Стоит ли использовать другой компилятор?Моя цель - получить исполняемый файл при запуске make, чтобы я мог с ним что-то делать.
gcc -g -Wall -Wcast-align -Wcast-qual -Wmissing-declarations -Wmissing-prototypes -Wpointer-arith -Wstrict-prototypes -Wno-unused-parameter -Wno-unused-function -Wshadow -Wundef -Wwrite-strings -DNDEBUG -c -o wgtcfg.o wgtcfg.c
process_begin: CreateProcess(NULL, gcc -g -Wall -Wcast-align -Wcast-qual -Wmissing-declarations -Wmissing-prototypes -Wpointer-arith -Wstrict-prototypes -Wno-unused-parameter -Wno-unused-function -Wshadow -Wundef -Wwrite-strings -DNDEBUG -c -o wgtcfg.o wgtcfg.c, ...) failed.
make (e=2): 系统找不到指定的文件。
make: *** [<builtin>: wgtcfg.o] Error 2