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

Visual Studio C++项目通过CMake链接SFML库时报set_property错误

报错原因与解决方案

1. 直接修复当前触发的报错

你的第15行set_property命令漏写了必填的PROPERTY关键字,CMake无法识别你要设置的属性名,所以触发报错。
同时你存在CMake语法错误:CMake中引用内置变量需要用${}包裹,而不是$(),后者是Visual Studio的变量引用语法,在CMake中会导致路径识别失败,无法正常链接SFML库。

2. 修正后的完整CMakeLists.txt

# CMakeList.txt : CMake project for Dijakstra2, include source and define
# project specific logic here.
#
cmake_minimum_required (VERSION 3.8)
project(Dijakstra2)

# Add source to this project's executable.
add_executable (Dijakstra2 "Dijakstra2.cpp" "Dijakstra2.h")

# 修正变量引用语法为${}
target_link_libraries(Dijakstra2 ${CMAKE_SOURCE_DIR}/library/sfml-graphics.lib)
target_link_libraries(Dijakstra2 ${CMAKE_SOURCE_DIR}/library/sfml-audio.lib)
target_link_libraries(Dijakstra2 ${CMAKE_SOURCE_DIR}/library/sfml-system.lib)
target_link_libraries(Dijakstra2 ${CMAKE_SOURCE_DIR}/library/sfml-window.lib)

include_directories (${CMAKE_SOURCE_DIR}/include)
set_property (TARGET Dijakstra2 PROPERTY CXX_STANDARD 17)
# 补上漏掉的PROPERTY关键字修复报错
set_property (TARGET Dijakstra2 PROPERTY CXX_STANDARD_REQUIRED ON)
# TODO: Add tests and install targets if needed.

3. 后续运行注意事项

  • 编译成功后,需要将SFML的bin目录下对应的dll文件复制到生成的exe同级目录,或者将bin目录加入系统环境变量PATH,避免运行时找不到动态库的报错
  • 要保证你使用的SFML版本位数和Visual Studio的编译目标架构一致,比如64位SFML要对应x64编译目标,否则会出现架构不兼容的链接错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:54:04