gpt4 book ai didi

makefile - 如何配置我的 makefile 以进行调试和发布版本?

转载 作者:行者123 更新时间:2023-12-03 04:17:18 25 4
gpt4 key购买 nike

我的项目有以下 makefile,我想将其配置为发布和调试版本。在我的代码中,我有很多 #ifdef DEBUG 宏,因此只需设置该宏并向编译器添加 -g3 -gdwarf2 标志即可。我怎样才能做到这一点?

$(CC) = g++ -g3 -gdwarf2
$(cc) = gcc -g3 -gdwarf2

all: executable

executable: CommandParser.tab.o CommandParser.yy.o Command.o
g++ -g -o output CommandParser.yy.o CommandParser.tab.o Command.o -lfl

CommandParser.yy.o: CommandParser.l
flex -o CommandParser.yy.c CommandParser.l
gcc -g -c CommandParser.yy.c

CommandParser.tab.o: CommandParser.y
bison -d CommandParser.y
g++ -g -c CommandParser.tab.c

Command.o: Command.cpp
g++ -g -c Command.cpp

clean:
rm -f CommandParser.tab.* CommandParser.yy.* output *.o

只是澄清一下,当我说发布/调试版本时,我希望能够仅输入 make 并获得发布版本或 make debug 并获得调试构建,无需手动注释掉 makefile 中的内容。

最佳答案

您可以使用Target-specific Variable Values 。示例:

CXXFLAGS = -g3 -gdwarf2
CCFLAGS = -g3 -gdwarf2

all: executable

debug: CXXFLAGS += -DDEBUG -g
debug: CCFLAGS += -DDEBUG -g
debug: executable

executable: CommandParser.tab.o CommandParser.yy.o Command.o
$(CXX) -o output CommandParser.yy.o CommandParser.tab.o Command.o -lfl

CommandParser.yy.o: CommandParser.l
flex -o CommandParser.yy.c CommandParser.l
$(CC) -c CommandParser.yy.c

请记住在所有编译命令中使用 $(CXX) 或 $(CC)。

然后,“make debug”将具有额外的标志,例如 -DDEBUG 和 -g,而“make”则不会。

顺便说一句,您可以像其他帖子所建议的那样使您的 Makefile 更加简洁。

关于makefile - 如何配置我的 makefile 以进行调试和发布版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1079832/

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