#c #solaris #porting
#c #solaris #перенос
Вопрос:
Я пытаюсь перенести приложение из Windows в solaris, и я обнаружил, что Imakefile не определен должным образом или, по крайней мере, не работает в ожидаемом режиме.
У меня есть некоторые правила, определенные для копирования некоторых файлов protobuf как:
file1.pb.cc:
cp -p $(PROTODIR)/file1.pb.cc .
file2.pb.cc:
cp -p $(PROTODIR)/file2.pb.cc .
file3.pb.cc:
cp -p $(PROTODIR)/file3.pb.cc .
В Windows копируются все файлы.
В solaris копируется только первый файл, затем ничего не происходит.
Если я повторно запускаю make, я получаю сообщение ‘file1.pb.cc ‘ обновлен (что нормально, потому что есть), и выполнение завершено.
Итак, почему другие файлы не копируются?
Спасибо, Богдан
Комментарии:
1. Вы уверены, что имеете в виду Imakefile? Это выглядит как обычный Makefile. Файлы Imakefile используются с imake или xmkmf для генерации файлов Makefile.
Ответ №1:
Вам нужно добавить правило в начало файла:
default: file1.pb.cc file2.pb.cc file3.pb.cc
Имя правила не важно, важно лишь, чтобы оно было первым. Причина в том, что make
по умолчанию выполняется только первое правило в файле, если не указан аргумент.
Затем это default
правило зависит от файлов, которые вы хотите скопировать, и make
будет проверять наличие правил для них.
Ответ №2:
Как вы можете видеть из документации, я не думаю, что вы можете опустить назначение ваших копий.
Комментарии:
1. О, я забыл указать здесь пункты назначения в вопросе, но в моем файле у меня есть правильная командная строка.