我使用这个工具叫做 惰性C++ 它将单个 C++ .lzz 文件分解为 .h 和 .cpp 文件。我想 马克普 期望在我构建 .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.

其他提示

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 选项来抑制重新创建相同的文件,减少它的工作量也没什么坏处。

问候——丹尼尔

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top