gpt4 book ai didi

c++ - Makefile 不理解 g++ 但终端可以

转载 作者:行者123 更新时间:2023-11-30 02:22:09 24 4
gpt4 key购买 nike

enter image description here

生成文件

# Assignments
#########################################################
CC := g++
SRC := src
BUILD := build
INCLUDE := include
TARGET := bin/driver
LIB := lib
TESTS := tests

CFLAGS := -g -Wall -Wextra

PATH := -I $(INCLUDE)

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

driver: Logbook.o Entry.o main.o
g++ Logbook.o Entry.o main.o -o driver

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

Logbook.o:
g++ -c $(PATH) $(LIB)/Logbook.cpp

Entry.o:
g++ -c $(PATH) $(LIB)/Entry.cpp

test:
g++ -c $(PATH) $(LIB)/Logbook.cpp

clean:
rm -f *.o *.exe driver

标准输出

mint@mint-VirtualBox ~/Desktop/Logbook $ ls
googletest include lib main.cpp Makefile README.md src
mint@mint-VirtualBox ~/Desktop/Logbook $ make
g++ -c -I include lib/Logbook.cpp
make: g++: Command not found
Makefile:47: recipe for target 'Logbook.o' failed
make: *** [Logbook.o] Error 127
mint@mint-VirtualBox ~/Desktop/Logbook $ ls
googletest include lib main.cpp Makefile README.md src
mint@mint-VirtualBox ~/Desktop/Logbook $ g++ -c -I include lib/Logbook.cpp
mint@mint-VirtualBox ~/Desktop/Logbook $ ls
googletest include lib Logbook.o main.cpp Makefile README.md src
mint@mint-VirtualBox ~/Desktop/Logbook $

预期的结果是 g++ 在从 makefile 内部调用时工作,但显然没有这里到底发生了什么?在终端中应该有选项卡并运行编译命令,但 Makefile 只是不想同意 g++ 命令存在。

最佳答案

不要调用变量 PATH,它会覆盖告诉 Makefile 在哪里寻找二进制文件的默认环境变量。只需将其重命名为 CCFLAGS 左右即可。

CCFLAGS := -I $(INCLUDE)

Logbook.o:
g++ -c $(CCFLAGS) $(LIB)/Logbook.cpp

有关 PATH 的更多详细信息,例如这里:https://en.wikipedia.org/wiki/PATH_(variable)

关于c++ - Makefile 不理解 g++ 但终端可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47653594/

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