Сделать источник с двумя целями - PullRequest
2 голосов
/ 30 августа 2008

Я использую этот инструмент под названием Lazy C ++ , который разбивает один файл C ++ .lzz на файлы .h и .cpp. Я хочу, чтобы Makepp ожидал, что оба этих файла будут существовать после моего правила построения файлов .lzz, но я не уверен, как поместить две цели в одну строку сборки.

Ответы [ 2 ]

3 голосов
/ 30 августа 2008

Я никогда не использовал 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.

2 голосов
/ 27 апреля 2010

Лзз потрясающе! Это как раз то, что я искал 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 для подавления воссоздания идентичного файла.

С уважением - Даниэль

...