make:gcc:在makefile中找不到包含的命令
我正在尝试创建一个makefile体系结构,因此我在顶部有一个全局makefile,它调用子目录中的另一个 全局生成文件:make:gcc:在makefile中找不到包含的命令,gcc,makefile,Gcc,Makefile,我正在尝试创建一个makefile体系结构,因此我在顶部有一个全局makefile,它调用子目录中的另一个 全局生成文件: CC = gcc CFLAGS = -W -Wall -pedantic LDFLAGS = PROJECT = proj SOURCES = PATH = $(PROJECT) include $(PATH)/Makefile all : $(PROJECT).exe $(PROJECT).exe
CC = gcc
CFLAGS = -W -Wall -pedantic
LDFLAGS =
PROJECT = proj
SOURCES =
PATH = $(PROJECT)
include $(PATH)/Makefile
all : $(PROJECT).exe
$(PROJECT).exe :
$(CC) $(CFLAGS) $(LDFLAGS) $(DEFINES) $(INCLUDES) $(SOURCES) -o $@
clean :
rm -rf *.exe
子目录makefile:
CC = gcc
CFLAGS = -W -Wall -pedantic
LDFLAGS =
SOURCES += $(PATH)/main.c
当我在顶层目录中“make”时,出现以下错误:
gcc -W -Wall -pedantic proj/main.c -o proj.exe
make: gcc: Command not found
make: *** [Makefile:17: FK16_jake.exe] Error 127
但当我在终端中键入完全相同的命令(gcc-W-Wall-pedanticproj/main.c-oproj.exe)时,它正在生成
如果我删除makefile include,他会识别gcc,但不会生成,因为没有源代码(正常行为)。您正在覆盖路径,该路径用于确定在何处查找可执行文件。更改此变量,它应该会工作 您正在覆盖路径,该路径用于确定在何处查找可执行文件。更改此变量,它应该会工作 在UNIX shell中,指定运行命令时搜索可执行文件的目录集 报告说: 当
make
运行配方时,makefile中定义的变量为
放置在每个外壳的环境中。这允许你通过考试
要进行调用的sub-值(请参阅)。默认情况下,只有来自环境的变量
或者将命令行传递给递归调用
因为PATH
是一个shell变量,并且是在make
环境中定义的,所以它是“来自环境”。这意味着当您使用PATH=$(PROJECT)
修改值时,更新的值将在运行$(PROJECT.exe)配方的shell环境中设置。这意味着shell在路径的值不正确的情况下运行,因此无法找到gcc
为了避免这种混淆,不要将PATH
用作makefile变量。使用与shell所依赖的环境变量不同的另一个名称。您可以将其称为PROJECT\u PATH
,或者只使用$(PROJECT)
而不是$(PATH)
在UNIX shell中,指定在运行命令时搜索可执行文件的目录集
报告说:
当make
运行配方时,makefile中定义的变量为
放置在每个外壳的环境中。这允许你通过考试
要进行
调用的sub-值(请参阅)。默认情况下,只有来自环境的变量
或者将命令行传递给递归调用
因为PATH
是一个shell变量,并且是在make
环境中定义的,所以它是“来自环境”。这意味着当您使用PATH=$(PROJECT)
修改值时,更新的值将在运行$(PROJECT.exe)配方的shell环境中设置。这意味着shell在路径的值不正确的情况下运行,因此无法找到gcc
为了避免这种混淆,不要将PATH
用作makefile变量。使用与shell所依赖的环境变量不同的另一个名称。您可以将其称为PROJECT\u PATH
,或者只使用$(PROJECT)
而不是$(PATH)