使用两个目标制作源代码

时间:2008-08-30 01:26:42

标签: build-process makefile lazy-c++

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

2 个答案:

答案 0 :(得分:3)

我从未亲自使用过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了解详情。

答案 1 :(得分:2)

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选项来禁止重新创建相同的文件,可以减少要做的事情。

问候 - 丹尼尔