这个简单的makefile有什么问题?

时间:2019-03-10 23:02:35

标签: windows makefile mingw

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

获取

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还会崩溃并显示一个对话框。

有什么帮助吗?

更新

将相同的命令转录为批处理文件有效

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

0 个答案:

没有答案