c++ # include< QtWidgets>:没有这样的文件或目录

h9a6wy2h  于 9个月前  发布在  其他
关注(0)|答案(1)|浏览(149)

请不要把我钉死在十字架上。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


到目前为止,代码应该呈现一个基本的窗口,但它没有。

avwztpqn

avwztpqn1#

你在Makefile中同时使用了CFLAGSCXXFLAGS。为什么?一个就足够了。当然,你应该使用CXXFLAGS,因为你使用的是C编译器(在你的例子中是g)。
问题是你在 * 编译源文件 * 的配方中没有使用CXXFLAGS。该变量包含Qt头文件的包含目录的路径。

相关问题