我想這是一個比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