Mingw и сделать переменные - PullRequest
2 голосов
/ 27 октября 2010

Я пытаюсь скомпилировать проект с открытым исходным кодом в Windows под mingw / msys.

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 не работает так, как я ожидаю, что он будет функционировать.

1 Ответ

1 голос
/ 27 октября 2010

CC - это одна из нескольких неявных переменных , автоматически определяемых в сеансе make, поэтому строка ifndef CC должна никогда оценивать как true.

Это объясняет, почему вы ничего не видите в командной строке для echo $CC. Среда MSYS не имеет понятия CC.

Если вы хотите увидеть значение переменных в сеансе make, вы всегда можете использовать функцию info :

$(info $(CC))

Это выведет значение переменной CC на консоль в тот момент, когда эта строка в make-файле будет оценена.

...