使用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
相关产品推荐
相关产品推荐

