我想在我的项目中使用 SDL2_gfx(Linux Mint 上的 VSCode),但收到“SDL2_gfxPrimitives.h:没有这样的文件或目录”错误。我已经安装了 SDL2 和 SDL2_ttf 并正在运行。
我按照网站上的说明安装了 SDL2_gfx (https://www.ferzkopp.net/Software/SDL2_gfx/Docs/html/index.html)。这是我的 Makefile:
CXX := g++
CXX_FLAGS := -std=c++17 -ggdb
BIN := bin
SRC := src
INCLUDE := include
LIBRARIES := -lSDL2main -lSDL2 -lSDL2_ttf -lSDL2_gfx
EXECUTABLE := main
all: $(BIN)/$(EXECUTABLE)
run: clean all
clear
./$(BIN)/$(EXECUTABLE)
$(BIN)/$(EXECUTABLE): $(SRC)/*.cpp
$(CXX) $(CXX_FLAGS) -I$(INCLUDE) $^ -o $@ $(LIBRARIES)
clean:
-rm $(BIN)/*
以下是我正在使用的包括:
#pragma once
#include <string>
#include <iostream>
#include <vector>
#include <list>
#include <cmath>
#include <algorithm>
#include <SDL2/SDL.h>
#include <SDL2/SDL_ttf.h>
#include <SDL2_gfxPrimitives.h>
using namespace std;
我认为这个错误可能是由于 SDL2_gfx 安装在 /usr/local/include/SDL2 以及其他两个 SDL 库安装在 /usr/include/SDL2 引起的,所以我将 /usr/local/include/SDL2 添加到 c_cpp_properties 中。 json 包含路径:
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/local/include/SDL2",
"/usr/include/SDL2"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c17",
"cppStandard": "gnu++17",
"intelliSenseMode": "linux-gcc-x64"
}
],
"version": 4
}
这没有帮助。我可能在这里遗漏了一些非常明显的东西,但我找不到错误。已经有一篇文章讨论了这个问题(Cannot use SDL_gfxPrimitive),但除了简单地检查编译器标志之外,它没有答案。
您正在使用 make 进行编译,因此
c_cpp_properties
与它无关。您需要将 -I/usr/local/include
添加到 CXX_FLAGS
并将相应的 -L
标志添加到 LIBRARIES
:
CXX_FLAGS := -std=c++17 -ggdb -I/usr/local/include
LIBRARIES := -L/usr/local/lib -lSDL2main -lSDL2 -lSDL2_ttf -lSDL2_gfx
进一步搜索后,我注意到 SDL2_gfx 附带了一个 pkg-config 文件,因此您可以询问 pkg-config:(您可能需要摆弄
PKG_CONFIG_PATH
才能让它查看 /usr/local)
CXX_FLAGS := -std=c++17 -ggdb $(shell pkg-config --cflags SDL2_gfx)
LIBRARIES := -lSDL2main -lSDL2 -lSDL2_ttf $(shell pkg-config --libs SDL2_gfx)