使源具有两个目标
时间: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选项来禁止重新创建相同的文件,可以减少它的工作量,这不会有什么坏处。
问候-丹尼尔