使源具有两个目标

时间:2020-03-05 18:45:18  来源:igfitidea点击:

我使用了称为Lazy C ++的工具,该工具将单个C ++ .lzz文件分解为.h和.cpp文件。我希望Makepp希望在建立.lzz文件的规则之后这两个文件都存在,但是我不确定如何将两个目标放在一个构建行中。

解决方案

回答

我从未亲自使用过Makepp,但是由于它是GNU Make的直接替代品,因此我们应该可以执行以下操作:

build: foo.h foo.cpp
   g++ $(CFLAGS) foo.cpp -o $(LFLAGS) foo

foo.h foo.cpp: foo.lzz
   lzz foo.lzz

也不确定那里的lzz调用,但这应该有所帮助。我们可以在http://theory.uwinnipeg.ca/gnu/make/make_37.html上了解有关此内容的更多信息。

回答

Lzz太神奇了!这就是我在寻找的http://groups.google.com/group/comp.lang.c++/browse_thread/thread/c50de73b70a6a957/f3f47fcdcfb6bc09

实际上,我们所需要做的只是(通常)依赖于链接规则中的foo.o和调用lzz的模式规则:

%.cpp %.h: %.lzz
    lzz $(input)

其余的将自动放置到位。当编译任何包含foo.h的源代码,或者将foo.o链接到库或者程序时,lzz会首先被自动调用。

Makepp还将识别是否仅更改了时间戳而不更改了生成文件的内容,并忽略了该时间戳。但是,通过使用lzz选项来禁止重新创建相同的文件,可以减少它的工作量,这不会有什么坏处。

问候-丹尼尔