我正在尝试在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块不能正常工作。
答案 0 :(得分:1)
CC
是在make会话中自动定义的多个implicit variables之一,因此行ifndef CC
永远不会评估为true。
这解释了为什么在echo $CC
的命令行上看不到任何内容。 MSYS环境没有CC的概念。
如果您想在make会话中查看变量的值,您可以随时使用info函数:
$(info $(CC))
这会在评估makefile中的那一行时将CC变量的值回显到控制台。