Круговая зависимость Makefile с файлами ресурсов Windows

Похоже, что что-то не так с вашей конфигурацией, вот несколько вещей, которые вы можете проверить:

  1. Убедитесь, что PHP установлен и работает правильно. Это может показаться глупым, но вы никогда не знаете. Простой способ проверить - запустить php -v из командной строки и посмотреть, возвращает ли информация о версии или какие-либо ошибки.
  2. Убедитесь, что модуль PHP указан и раскомментирован внутри вашего httpd.conf Apache. должно быть что-то вроде LoadModule php5_module "c:/php/php5apache2_2.dll" в файле. Найдите LoadModule php и убедитесь, что перед ним нет комментария (;).
  3. Убедитесь, что в файле httpd.conf Apache есть PHP MIME-тип. Это должно быть что-то вроде AddType application/x-httpd-php .php. Это говорит Apache, чтобы запустить .php файлы как PHP. Найдите AddType, а затем убедитесь, что есть запись для PHP, и что она раскоментирована.
  4. Убедитесь, что ваш файл имеет расширение .php на нем или любое расширение, указанное в определении MIME в point # 3, иначе он не будет выполняться как PHP.
  5. Убедитесь, что вы не используете короткие теги в файле PHP (), это не включен на всех серверах по умолчанию, и их использование не рекомендуется. Вместо этого используйте (или включить короткие теги в вашем php.ini с short_open_tag=On, если у вас есть код, который их использует).
  6. Убедитесь, что вы обращаетесь к своему файлу через ваш веб-сервер, используя URL-адрес, такой как http://localhost/file.php, не через доступ к локальному файлу file://localhost/www/file.php

И, наконец, проверьте Руководство по PHP для дальнейших советов по настройке .

0
задан Dan Hoynoski 25 March 2019 в 21:05
поделиться

1 ответ

Один из способов - не называть выходные файлы windres расширением .o. Если вы выберете другое расширение, у вас не будет этой проблемы.

Другой способ заключается в использовании статических шаблонных правил для windres целей:

RCOBJ := $(patsubst %.rc,%.rc.o,$(wildcard *.rc))
OBJ = menu_one.o $(RCOBJ)

  ...
$(RCOBJ) : %.rc.o : %.rc
        windres $^ -o $@

Поскольку статические шаблонные правила являются сокращением для создания явных правил и не являются неявными правилами, они не участвуют в поисках, поэтому у make не будет круговой зависимости.

ETA

ОК. Я создал ваш пример локально. Используя make -d, мы можем видеть, что происходит: make нуждается в build menu_one.rc.o, и он находит наше правило с предварительным условием menu_one.rc. Затем ему нужно посмотреть, сможет ли он перестроить manu_one.rc, и найти общее правило шаблона для построения исполняемых файлов:

%: %.o ; ...

Сопоставление этого шаблона с целью menu_one.rc дает предварительное условие menu_one.rc.o и у вас есть петля.

Вам нужно уведомить make, что файлы *.rc являются исходными файлами, и make не должна пытаться их создавать. Вы можете сделать это, объявив терминальное правило . В руководстве по сборке GNU make содержится подробное обсуждение тонкостей работы с правилами для любых совпадений (правилами с целью только из %, которая соответствует любой цели).

Добавьте это, чтобы сообщить make, что ваши .rc файлы являются терминальными (то есть они не могут быть собраны из чего-то другого):

%.rc:
0
ответ дан MadScientist 25 March 2019 в 21:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: