2008-08-30 2 views
2

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

ответ

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.

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 для подавления воссоздания идентичного файла.

С уважением - Daniel

+0

Спасибо за ссылку, это интересная дискуссия. Кстати, я полностью с вами, и я ценю, что вы терпеливы и четко объясняете свою позицию, особенно в свете некоторых из довольно грубых ответов. – 2011-05-18 23:58:04

Смежные вопросы