簡體   English   中英

我的項目中的某些僅標頭文件不能包含使用 CMake 和 Vscode 的“SFML/Graphics.hpp”

[英]Some headers-only files in my project cannot include “SFML/Graphics.hpp” using CMake and Vscode

我是 C++ 和 CMake 的新手,並開始了一個大項目。 我使用 VScode 作為我的文本編輯器和 CMake 作為我的構建工具。

問題是我可以在所有具有相同名稱的源文件的header文件中包含“SFML/Graphics.hpp”,但如果我包含“SFML/Graphics.hpp”或任何其他包含“SFML/圖形”cmake 不會構建並返回錯誤。

這是我的代碼

項目目錄樹

Game|> (root)
  |- CMakeLists.txt
  |> include
  |    |- BaseComponent.hpp (Header-only)
  |    |- TransformComponent.hpp (Header-only)
  |    |- CombatComponent.hpp (Header-only)
  |    |- MovementComponent.hpp (Header-only)
  |    |- Constants.hpp (Header-only)
  |    |- TimeUtils.hpp (Header-only)
  |    |- EcsManager.hpp
  |    |- EntityManager.hpp
  |    |- Game.hpp
  |    |- GameContext.hpp (Header-only)
  |    |- Scene.hpp (Header-only)
  |    |- GameScene.hpp
  |    |- System.hpp
  |    |- Input.hpp
  |    |- MovementSystem.hpp
  |    |- RenderableSystem.hpp
  |> src
  |    |- CMakeLists.txt
  |    |- main.cpp
  |    |- Game.cpp
  |    |- EntityManager.cpp
  |    |- SceneManager.cpp
  |    |- Input.cpp
  |    |- GameScene.cpp
  |    |> Ecs
       |    |- CMakeLists.txt
       |    |- EcsManager.cpp
       |    |- System.cpp
       |    |> Systems
            |    |- CMakeLists.txt
            |    |- MovementSystem.cpp
            |    |- RenderableSystem.cpp
  |    
  |> bin
  |> build

CMakeLists.txt - 根

project(RPG)
set(CMAKE_TOOLCHAIN_FILE         
"C:/Users/dante/vcpkg/scripts/buildsystems/vcpkg.cmake")

set(EXECUTABLE_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/bin")
set(SOURCES src/EntityManager.cpp src/Game.cpp src/GameScene.cpp 
src/main.cpp src/SceneManager.cpp src/Input.cpp)
include_directories("${PROJECT_SOURCE_DIR}/include")

add_subdirectory(src)

find_package(SFML 2.5.1 COMPONENTS REQUIRED graphics window system network 
audio)
find_package(nlohmann_json 3.2.0 REQUIRED)

add_executable(RPG ${SOURCES}) 
target_link_libraries(RPG sfml-graphics sfml-window sfml-system sfml- 
network sfml-audio)
target_link_libraries(RPG nlohmann_json::nlohmann_json)
target_link_libraries(RPG ECS)

CMakeLists.txt - 源代碼

add_subdirectory(Ecs)

CMakeLists.txt - Ecs

add_subdirectory(Systems)

add_library(ECS EcsManager.cpp System.cpp )

target_link_libraries(ECS ECS_SYSTEMS)

CMakeLists.txt - 系統

add_library(ECS_SYSTEMS MovementSystem.cpp RenderableSystem.cpp)

Cmake 輸出的錯誤是:'SFML/Graphics.hpp': No such file or directory MSVC(C1083)

如果我在任何“任何”組件 Class 中包含“SFML/Graphics.hpp”,則會出現錯誤任何“組件 Class(或任何其他僅標頭)都會出錯。

我在stackoverflow中找不到任何解決方案。

不要判斷我的文件夾結構在第一次出現錯誤時有所不同......而不是我更改為查看 CMake 是否會構建。

您需要將 SFML 包含目錄添加到包含目錄列表中。

find_package(SFML 2.5.1 COMPONENTS REQUIRED graphics window system network audio)

添加行

include_directories(${SFML_INCLUDE_DIR})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM