我正在尝试在 mingw/msys 下在 Windows 上编译一个开源项目。
makefile 包含(除其他外)这一行
@${MAKE} --no-print-directory -C . -f physfs.make
physfs.make 包含(除其他外)这些行:
ifndef CC
CC = gcc
endif
当我运行 make 时,出现以下错误:
Creating obj/Debug/physfs
physfs.c
make[1]: cc: Command not found
make[1]: *** [obj/Debug/physfs/physfs.o] Error 127
make: *** [physfs] Error 2
如果我对 ifndef/endif 对进行注释而使 CC = gcc 完好无损,则构建工作正常。如果不是 make 我发出这个命令:
make -e CC=gcc
构建也能正常工作。但是当我在 msys 中运行以下命令时:
echo $CC
什么都不显示。
我认为关于环境变量如何在 MSYS 中工作并使我不理解的一些基本知识。
能否请一些人帮我解决这个问题,这样我就能理解为什么简单的“make”命令会报错,以及为什么 ifndef block 没有像我期望的那样运行。
最佳答案
CC
是几个 implicit variables 之一在 make session 中自动定义,因此行 ifndef CC
应该永远评估为真。
这解释了为什么您在 echo $CC
的命令行上看不到任何内容。 MSYS环境没有CC的概念。
如果你想在 make session 中查看变量的值,你总是可以使用 info功能:
$(info $(CC))
这将在评估 makefile 中的该行时将 CC 变量的值回显到控制台。
关于c - Mingw 和 make 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4029274/