[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
srcdir != buildir woes
From: |
Angus Leeming |
Subject: |
srcdir != buildir woes |
Date: |
Tue, 26 Jul 2005 09:13:33 +0100 |
User-agent: |
KNode/0.8.1 |
Guys, I have a Makefile containing some source files:
UISRCS = optionDialogGUIWidget_base.ui \
optionDialogAccessibilityWidget.ui
MOCSRCS = documentPageCache.h \
documentWidget.h
The .ui files are processed to create .h files:
$(objdir)/%.h: $(srcdir)/%.ui
$(UIC) $< > $@
The .h files are processed to produce .moc files.
$(objdir)/%.moc: $(srcdir)/%.h
$(MOC) -o $@ $<
The .moc files are #included in my C++ source.
However, here's the rub. When my srcdir != buildir the generated .h files
are not in the srcdir and so the .h -> .moc step is failing. For obvious
reasons.
I can add another rule, so:
$(objdir)/%.moc: %.h
$(MOC) -o $@ $<
(and this works) but obviously things are going to get confused when srcdir
and builddir are the same.
I attach my Makefile. Can you put me back on the right path?
Regards,
Angus
ps, one final question. My build completes as:
ar cru libkviewshell.a documentPageCache.o documentWidget.o history.o
kmultipage.o kprintDialogPage_pageoptions.o kviewpart.o kviewpart_iface.o
kvsprefs.o marklist.o pageSize.o pageSizeDialog.o pageSizeWidget.o
pageView.o renderedDocumentPage.o renderedDocumentPagePixmap.o
renderedDocumentPagePrinter.o searchWidget.o selection.o simplePageSize.o
sizePreview.o tableOfContents.o units.o zoom.o
ranlib libkviewshell.a
rm optionDialogGUIWidget_base.moc optionDialogAccessibilityWidget.moc
pageSizeWidget_base.moc
Why is it removing these (generated in two steps) .moc files:
.ui -> .h
.h -> .moc
It means that my entire build process starts from scratch each time.
Moreover, I find that if my make process fails at some point then all
intermediate files are removed:
make: *** [pageSize.o] Interrupt
make: *** Deleting intermediate file `optionDialogGUIWidget_base.moc'
make: *** Deleting intermediate file `optionDialogAccessibilityWidget.moc'
make: *** Deleting intermediate file `sizePreview.moc'
make: *** Deleting intermediate file `pageSizeWidget_base.moc'
make: *** Deleting intermediate file `tableOfContents.moc'
Can I prevent this from happening?
A.
Makefile
Description: Text document
- srcdir != buildir woes,
Angus Leeming <=