我想这是一个比Qt和moc更多的GNU制造问题,但是在这里。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: [email protected] from $<"
$(MOC) $< -o [email protected]
这是愚蠢的,因为正在发生的事情是,$<
第一头部,所以所有的对象都是使用这个标题,而不是相关的头文件编译。
有没有办法清理这个,以便从正确的头部构建正确的moc对象?
只是出于好奇,你为什么这样做,而不是让'qmake'构建它适合你? – cmannett85
@ cmannett85我必须承认,我没有听说过这个。然而,问题在于GUI组件是一个更大的库的一小部分,它是使用gnu make构建的。 – Nim