C++ SDL2_gfx - “SDL2_gfxPrimitives.h:没有这样的文件或目录”错误

问题描述 投票:0回答:1

我想在我的项目中使用 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),但除了简单地检查编译器标志之外,它没有答案。

c++ makefile linker-errors sdl-2
1个回答
0
投票

您正在使用 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)
© www.soinside.com 2019 - 2024. All rights reserved.