Что не так с этим простым make-файлом? - PullRequest
0 голосов
/ 11 марта 2019
SRC = src/main.cpp
TARGET = ner_stream

MITIEDIR = ../../mitielib

CFLAGS = -fPIC -Wall -W -O3 -I$(MITIEDIR)/include -I../../dlib
LDFLAGS = $(MITIEDIR)/libmitie.a

CC = g++

####################################################

TMP = $(SRC:.cpp=.o)
OBJ = $(TMP:.c=.o)

$(TARGET): $(OBJ) $(MITIEDIR)
    $(CC) $(OBJ) -o $@ $(LDFLAGS) 

.cpp.o: $<
    @echo Compiling $<
    $(CC) -c $(CFLAGS) $< -o $@

.c.o: $<
    @echo Compiling $<
    gcc -c $(CFLAGS) $< -o $@

clean:
    rm -f $(OBJ) $(TARGET)
    echo All object files and binaries removed

dep: 
    @echo Running makedepend
    @makedepend -- $(CFLAGS) -- $(SRC) 2> /dev/null 
    @echo Completed makedepend

тип

make

get

Compiling src/main.cpp
g++ -c -fPIC -Wall -W -O3 -I../../mitielib/include -I../../dlib src/main.cpp -o src/main.o
Cannot create temporary file in I:\sw\MITIE\tools\ner_stream\src\main.o\: No such file or directory

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
make: *** [makefile:22: src/main.o] Error 3

это mingw, поэтому также mingw32-make

Compiling src/main.cpp
g++ -c -fPIC -Wall -W -O3 -I../../mitielib/include -I../../dlib src/main.cpp -o src/main.o
Cannot create temporary file in I:\sw\MITIE\tools\ner_stream\src\main.o\: No such file or directory

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
makefile:21: recipe for target 'src/main.o' failed
mingw32-make: *** [src/main.o] Error 3

кроме этого времени make также аварийно завершает работу с диалоговым окном.

любая помощь?

update

Запись тех же команд в командный файл работает

set MITIEDIR=../../mitielib
set CFLAGS=-Wall -W -O3 -I%MITIEDIR%/include -I../../dlib
g++ %CFLAGS% src/main.cpp -o ner_stream ../../mitielib/libmitie.a
mv ner_stream.exe ../..

Обновление # 2

Я думаю, я понял это.директива TMP конфликтует с gcc.Вместо этого я пробую это;

SRC = src/main.cpp
TARGET = ner_stream

MITIEDIR = ../../mitielib

CFLAGS = -fPIC -Wall -W -O3 -I$(MITIEDIR)/include -I../../dlib
LDFLAGS = $(MITIEDIR)/libmitie.a

CC = g++

####################################################

#TMP = $(SRC:.cpp=.o)
#OBJ = $(.c=.o)

OBJ = $(SRC:.cpp=.o)

$(TARGET): $(OBJ) 
    $(CC) $(OBJ) -o $@ $(LDFLAGS) 

.cpp.o: $<
    @echo Compiling $<
    $(CC) -c $(CFLAGS) $< -o $@

.c.o: $<
    @echo Compiling $<
    gcc -c $(CFLAGS) $< -o $@

clean:
    rm -f $(OBJ) 
    rm -f $(TARGET)
    echo All object files and binaries removed

...