Правило копирования файлов в Solaris Imakefile

#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. О, я забыл указать здесь пункты назначения в вопросе, но в моем файле у меня есть правильная командная строка.