请不要把我钉死在十字架上。ChatGPT或Google什么也没做,所以我在这里。基本上,我不能在我的C++代码中使用QtWidgets(出于某种原因)。
**问题:**当我在C++中包含<QtWidgets>
头时,我得到这个错误:
g++ -std=c++11 -Wall -Wextra -Isrc -Isrc/lib -c src/ui/mainwindow.cpp -o bin/ui/mainwindow.o
src/ui/mainwindow.cpp:3:10: fatal error: QtWidgets: No such file or directory
3 | #include <QtWidgets> //! doesn't work yet
| ^~~~~~~~~~~
compilation terminated.
make: *** [Makefile:34: bin/ui/mainwindow.o] Error 1
字符串
我试着从Debian仓库重新安装qtbase5-dev
软件包。我试着用谷歌搜索并询问ChatGPT。我修改了Makefile如下:
# Makefile for Comet code editor
# Compiler
CC := g++
# Compiler flags
CFLAGS := -std=c++11 -Wall -Wextra
CXXFLAGS += -I/usr/include/qt5
# Include directories
INCLUDE := -Isrc -Isrc/lib # Adjust include paths based on your project structure
# Directories
SRCDIR := src
BUILDDIR := bin
BINDIR := bin
# Source files
SOURCES = src/main.cpp src/ui/mainwindow.cpp src/ui/mainwindow.hpp src/ui/mainwindow.css
# Object files
OBJECTS := $(patsubst $(SRCDIR)/%.cpp,$(BUILDDIR)/%.o,$(SOURCES))
# Target executable
TARGET := $(BINDIR)/comet
# Default target
all: $(TARGET)
# Linking
$(TARGET): $(OBJECTS)
@mkdir -p $(BINDIR)
$(CC) $(OBJECTS) -o $(TARGET)
# Compiling source files
$(BUILDDIR)/%.o: $(SRCDIR)/%.cpp
@mkdir -p $(BUILDDIR)
$(CC) $(CFLAGS) $(INCLUDE) -c $< -o $@
# Run the comet executable
run: $(TARGET)
./$(TARGET)
# Cleaning
clean:
rm -r $(BUILDDIR)
# Phony targets
.PHONY: all run clean
型
到目前为止,代码应该呈现一个基本的窗口,但它没有。
1条答案
按热度按时间avwztpqn1#
你在Makefile中同时使用了
CFLAGS
和CXXFLAGS
。为什么?一个就足够了。当然,你应该使用CXXFLAGS
,因为你使用的是C编译器(在你的例子中是g)。问题是你在 * 编译源文件 * 的配方中没有使用
CXXFLAGS
。该变量包含Qt头文件的包含目录的路径。