C++ Solaris Imakefile复制文件规则

C++ Solaris Imakefile复制文件规则,c++,solaris,porting,C++,Solaris,Porting,我正在尝试将一个应用程序从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上复

我正在尝试将一个应用程序从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”是最新的(这是可以的,因为它在那里),执行就完成了

那么,为什么不复制其他文件呢

谢谢,
Bogdan

您需要在文件顶部添加一条规则:

default: file1.pb.cc file2.pb.cc file3.pb.cc
规则的名称并不重要,只是它是第一个。原因是,默认情况下,
make
仅在未提供参数的情况下执行文件中的第一条规则


默认规则取决于要复制的文件,而
make
将检查这些文件的规则。

您需要在文件顶部添加一条规则:

default: file1.pb.cc file2.pb.cc file3.pb.cc
规则的名称并不重要,只是它是第一个。原因是,默认情况下,
make
仅在未提供参数的情况下执行文件中的第一条规则


这个
默认的
规则取决于您想要复制的文件,而
make
将检查它们的规则。

从中可以看到,我认为您不能忽略副本的目的地。

从中可以看到,我认为您不能忽略副本的目的地。

哦,我忘了在问题中输入目的地,但在我的文件中我有正确的命令行。哦,我忘了在问题中输入目的地,但在我的文件中我有正确的命令行。你确定你是指Imakefile吗?这看起来像一个普通的Makefile。Imakefiles与imake或xmkmf一起用于生成生成文件。您确定是指Imakefile吗?这看起来像一个普通的Makefile。Imakefiles与imake或xmkmf一起用于生成生成文件。