Здравствуйте, я пытаюсь сгенерировать MOC
файлы для QT
с помощью makeifle. Проблема в том, что команда выполняется откуда-то, и я не могу найти откуда .... Это мой make-файл
BUILD = Build
### SOURCES ###
SRC = Src/Main\
Src/DialogBox/DialogBox
### MOC SOURCES ###
MOC_SRC = Src/DialogBox/DialogBox
### OBJECTS ###
OBJ = $(addsuffix .o, $(addprefix $(BUILD)/, $(SRC)))
OBJ += $(addsuffix .moc.o, $(addprefix $(BUILD)/, $(MOC_SRC)))
### INCLUDES ###
INC = TOO MANY INCLUDES TO PUT HERE....
### LINKER FLAGS ###
LDFLAGS = -LC:/Qt/5.15.0/mingw81_32/lib
LDLIBS = -lQt5Quick -lQt5PrintSupport -lQt5Qml -lQt5Network -lQt5Widgets -lQt5Gui -lQt5Core
### COMPILER FLAGS
CFLAGS = $(INC)
### COMPILER ###
CC = g++
### QT MOC ###
MOC = moc
all: $(BUILD)/test.exe
$(BUILD)/test.exe: $(OBJ)
@echo LINKING $^
@$(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS)
$(BUILD)/%.o: %.cpp
@echo COMPILING $<
@mkdir -p $(subst /,\,$(dir $@))
@$(CC) $(CFLAGS) -M -MT $@ -o $(patsubst %.o, %.d, $@) $<
@$(CC) $(CFLAGS) -o $@ -c $<
$(BUILD)/%.moc.cpp: %.h
@echo MOCCING $<
$(MOC) $< -o $@
@echo MOC END
-include $(OBJ:.o=.d)
.PHONY: clean
clean:
@echo CLEANING......
@rm -rf $(BUILD)/Src $(BUILD)/test.exe
Это результат:
COMPILING Src/Main.cpp
COMPILING Src/DialogBox/DialogBox.cpp
MOCCING Src/DialogBox/DialogBox.h
moc Src/DialogBox/DialogBox.h -o Build/Src/DialogBox/DialogBox.moc.cpp
MOC END
g++ -c -o Build/Src/DialogBox/DialogBox.moc.o Build/Src/DialogBox/DialogBox.moc.cpp
In file included from Build/Src/DialogBox/DialogBox.moc.cpp:10:0:
Build/Src/DialogBox/../../../Src/DialogBox/DialogBox.h:4:19: fatal error: QDialog: No such file or directory
#include "QDialog"
^
compilation terminated.
make: *** [<builtin>: Build/Src/DialogBox/DialogBox.moc.o] Error 1
rm Build/Src/DialogBox/DialogBox.moc.cpp
В основном я есть только два исходных файла: Main.cpp
и DialogBox.cpp
.
Я хочу сгенерировать файл MOC
из DialogBox.h
.
Проблема в этой команде:
g++ -c -o Build/Src/DialogBox/DialogBox.moc.o Build/Src/DialogBox/DialogBox.moc.cpp
Я не понимаю, почему он выполняется ...
РЕДАКТИРОВАТЬ:
Даже после:
MOCCING Src/DialogBox/DialogBox.h
moc Src/DialogBox/DialogBox.h -o Build/Src/DialogBox/DialogBox.moc.cpp
MOC END
такого файла нет Build/Src/DialogBox/DialogBox.moc.cpp
почему?