You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Vcpkg在CLion中配置SFML和TGUI时遇CMake构建错误

Windows下CLion+Vcpkg构建SFML/TGUI项目时CMake错误解决

错误信息

构建时出现如下CMake错误:

"C:\Program Files\JetBrains\CLion 2023.3.2\bin\cmake\win\x64\bin\cmake.exe" -DCMAKE_BUILD_TYPE=Debug "-DCMAKE_MAKE_PROGRAM=C:/Program Files/JetBrains/CLion 2023.3.2/bin/ninja/win/x64/ninja.exe" -DCMAKE_TOOLCHAIN_FILE=C:\Users\flame\.vcpkg-clion\vcpkg\scripts\buildsystems\vcpkg.cmake -G Ninja -S C:\Users\flame\Documents\projects\application-projects\GuiTesting -B C:\Users\flame\Documents\projects\application-projects\GuiTesting\cmake-build-debug
CMake Error at C:/Users/flame/.vcpkg-clion/vcpkg/scripts/buildsystems/vcpkg.cmake:859 (_find_package):
  Could not find a package configuration file provided by "SFML" with any of
  the following names:

    SFMLConfig.cmake
    sfml-config.cmake

  Add the installation prefix of "SFML" to CMAKE_PREFIX_PATH or set
  "SFML_DIR" to a directory containing one of the above files.  If "SFML"
  provides a separate development package or SDK, be sure it has been
  installed.
Call Stack (most recent call first):
  CMakeLists.txt:6 (find_package)


-- Configuring incomplete, errors occurred!

[Failed to reload]

当前使用的CMakeLists.txt

cmake_minimum_required(VERSION 3.27)
project(GuiTesting)

set(CMAKE_CXX_STANDARD 17)

find_package(SFML COMPONENTS system window graphics CONFIG REQUIRED)
find_package(TGUI CONFIG REQUIRED)

include_directories(./include)

add_executable(GuiTesting
        src/main.cpp
        src/ui/GuiManager.cpp
        include/ui/GuiManager.h
        include/Context.h
        include/AssetManager.h
        include/StateManager.h
        src/Game.cpp
        src/AssetManager.cpp
        src/GameState.cpp
        src/GraphicsSettings.cpp
        src/StateManager.cpp
        include/GameState.h
        include/State.h
        include/MainMenu.h
        src/MainMenu.cpp
        include/ui/GuiBase.h
        src/ui/TestGuiBase.cpp
        include/ui/TestGuiBase.h
        include/ui/CardButton.cpp
        include/ui/CardButton.h
)


target_link_libraries(GuiTesting PRIVATE sfml-system sfml-network sfml-graphics sfml-window)
target_link_libraries(GuiTesting PRIVATE TGUI::TGUI)

CMake调试配置选项

-DCMAKE_TOOLCHAIN_FILE=C:\Users\flame\.vcpkg-clion\vcpkg\scripts\buildsystems\vcpkg.cmake

之前的预编译库CMake配置

此前使用本地预编译库构建,每次运行构建/执行时间极长,配置如下:

cmake_minimum_required(VERSION 3.27)
project(GuiTesting)

set(CMAKE_CXX_STANDARD 17)


set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
option(BUILD_SHARED_LIBS "Build shared libraries" OFF)

include_directories(./include)

set(SFML_STATIC_LIBRARIES TRUE)
set(SFML_DIR "${CMAKE_SOURCE_DIR}/libs/SFML-2.6.1/lib/cmake/SFML/SFMLConfig.cmake")
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "${CMAKE_SOURCE_DIR}/libs/SFML-2.6.1")
find_package(SFML COMPONENTS system window graphics audio network REQUIRED)


# Fetch TGUI
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "${CMAKE_SOURCE_DIR}/libs/TGUI-1.1")



# Find TGUI
find_package(TGUI 1 REQUIRED)
set(TGUI_BACKEND SFML_GRAPHICS)

add_executable(GuiTesting
        src/main.cpp
        src/ui/GuiManager.cpp
        include/ui/GuiManager.h
        include/Context.h
        include/AssetManager.h
        include/StateManager.h
        src/Game.cpp
        src/AssetManager.cpp
        src/GameState.cpp
        src/GraphicsSettings.cpp
        src/StateManager.cpp
        include/GameState.h
        include/State.h
        include/MainMenu.h
        src/MainMenu.cpp
        include/ui/GuiBase.h
        src/ui/TestGuiBase.cpp
        include/ui/TestGuiBase.h
        include/ui/CardButton.cpp
        include/ui/CardButton.h

)
target_link_libraries(GuiTesting PRIVATE sfml-graphics)
target_link_libraries(GuiTesting PRIVATE TGUI::TGUI)
target_compile_features(GuiTesting PRIVATE cxx_std_17)



install(TARGETS GuiTesting)

解决步骤

1. 确认Vcpkg已正确安装依赖

打开终端,进入Vcpkg所在目录(C:\Users\flame\.vcpkg-clion\vcpkg),执行安装命令:

vcpkg install sfml tgui --triplet x64-windows

如果需要Debug版本,可追加--debug参数,或直接安装全配置:

vcpkg install sfml tgui --triplet x64-windows --debug

2. 修正CMakeLists.txt配置

Vcpkg集成时无需手动指定库路径,简化后的配置如下:

cmake_minimum_required(VERSION 3.27)
project(GuiTesting)

set(CMAKE_CXX_STANDARD 17)

# 查找Vcpkg管理的SFML和TGUI包
find_package(SFML REQUIRED COMPONENTS system window graphics)
find_package(TGUI REQUIRED)

add_executable(GuiTesting
        src/main.cpp
        src/ui/GuiManager.cpp
        include/ui/GuiManager.h
        include/Context.h
        include/AssetManager.h
        include/StateManager.h
        src/Game.cpp
        src/AssetManager.cpp
        src/GameState.cpp
        src/GraphicsSettings.cpp
        src/StateManager.cpp
        include/GameState.h
        include/State.h
        include/MainMenu.h
        src/MainMenu.cpp
        include/ui/GuiBase.h
        src/ui/TestGuiBase.cpp
        include/ui/TestGuiBase.h
        include/ui/CardButton.cpp
        include/ui/CardButton.h
)

# 链接库,Vcpkg自动处理依赖关系
target_include_directories(GuiTesting PRIVATE ./include)
target_link_libraries(GuiTesting PRIVATE SFML::System SFML::Window SFML::Graphics TGUI::TGUI)

3. 清理缓存并重新构建

  • 在CLion中点击File -> Reload CMake Project
  • 或直接删除cmake-build-debug目录,重新触发构建

4. 解决预编译库构建慢的问题

预编译静态库每次构建需重新链接所有库文件,导致耗时较长。推荐使用Vcpkg安装动态库(默认配置),若需静态链接,可执行:

vcpkg install sfml tgui --triplet x64-windows-static

但静态链接的构建时间通常仍会比动态链接长。


内容的提问来源于stack exchange,提问作者Sobstory

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 18:59:52