【发布时间】:2013-06-26 16:27:09
【问题描述】:
我想这更像是一个 GNU Make 问题,而不是 Qt 和 moc,但这里是这样。
我有一个包含多个Q_OBJECTS 的目录,并且我有一些简单的代码,它收集了所有这些,例如
MOCS := $(shell grep -l Q_OBJECT $(HEADERS))
假设HEADERS是“当前位置”的头文件集合
现在我想做的是指定一个规则,该规则将调用 Qt moc 来构建 .C 文件,然后将其编译成一个对象。如何指定这样的规则?
我的出发点是愚蠢的:
MOC_SOURCES := $(MOCS:%.h=%.C)
MOC_OBJECTS := $(MOC_SOURCES:%.C=%.o)
$(MOC_SOURCES) : $(MOCS)
@echo "Building Moc: $@ from $<"
$(MOC) $< -o $@
这很愚蠢,因为$< 是第一个标头,因此所有对象都使用此标头而不是相关标头进行编译。
有没有办法清理它,以便从正确的标头构建正确的 moc 对象?
【问题讨论】:
-
只是出于好奇,您为什么要这样做而不是让
qmake为您构建它? -
@cmannett85 我必须承认,我没有听说过这个。但是,问题在于 GUI 组件只是使用 gnu make 构建的更大库的一小部分。