gpt4 book ai didi

linux - 将 visual studio makefile 转换为 linux makefile

转载 作者:太空狗 更新时间:2023-10-29 11:37:54 26 4
gpt4 key购买 nike

我是 makefile 的新手,最近刚刚创建了一个适用于 c++ 项目的 makefile。它有两个cpp文件和一个h文件。我正在尝试将我的文件转换为在 Linux 中工作,但似乎无法弄清楚如何。有什么想法吗?

EXE = NumberGuessingGame.exe
CC = cl
LD = cl
OBJ = game.obj userInterface.obj
STD_HEADERS = header.h
CFLAGS = /c
LDFLAGS = /Fe

$(EXE): $(OBJ)
$(LD) $(OBJ) $(LDFLAGS)$(EXE)

game.obj: game.cpp $(STD_HEADERS)
$(CC) game.cpp $(CFLAGS)

userInterface.obj: userInterface.cpp $(STD_HEADERS)
$(CC) userInterface.cpp $(CFLAGS)

#prepare for complete rebuild
clean:
del /q *.obj
del /q *.exe

最佳答案

要深入了解 Linux 上的 make,请参阅 GNU make .

有一些不同。二进制文件没有扩展名

EXE = NumberGuessingGame

编译器是gcc,但不需要命名,因为内置了CCLD也是如此。但是由于您的文件名为 .cpp,因此相应的编译器是 g++,即 make 中的 CXX

目标文件的扩展名为 .o

OBJ = game.o userInterface.o
STD_HEADERS = header.h

编译器标志

CXXFLAGS = -c

/Fe 的等价物只是 -o,它没有指定为 LDFLAGS,而是在链接器命令行中拼写出来。

通常,您使用编译器进行链接

$(EXE): $(OBJ)
$(CXX) $(LDFLAGS) $(OBJ) -o $(EXE)

你不需要指定对象创建的规则,它们是内置的。只需指定依赖关系

game.o: $(STD_HEADERS)
userInterface.o: $(STD_HEADERS)

del 被称为 rm

clean:
rm -f $(OBJ)
rm -f $(EXE)

重要的一点是,缩进是一个tab 字符,没有 空格。如果你有空格,make 会提示

*** missing separator.  Stop.

或者其他一些奇怪的错误。

关于linux - 将 visual studio makefile 转换为 linux makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21654948/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com