2

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

4

2 回答 2

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阅读更多相关信息。

于 2008-08-30T02:10:19.930 回答
2

lz厉害了!这正是我正在寻找的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 选项来抑制重新创建相同的文件,减少它的工作量并没有什么坏处。

问候——丹尼尔

于 2010-04-26T22:57:48.287 回答