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

使用link_libraries仍遇CMake未定义引用:GLFW链接失败问题

解决GLFW链接时未定义引用glfwInit的问题

你的问题出在CMake配置的链接逻辑上,以及MinGW环境下缺少必要的系统库链接。以下是修正方案:

修正后的CMakeLists.txt

cmake_minimum_required(VERSION 3.0.0)
project(guitest VERSION 0.1.0 LANGUAGES C CXX)

add_executable(guitest main.cpp)

add_subdirectory(glfw)
# 直接将glfw目标链接到你的可执行文件
target_link_libraries(guitest PRIVATE glfw)
# MinGW环境必须额外链接opengl32库
target_link_libraries(guitest PRIVATE opengl32)

关键修改说明

  • 移除include_directories(glfw/include)和link_directories(glfw/src):通过add_subdirectory(glfw)导入GLFW后,glfw这个CMake目标已经自带了正确的头文件路径和链接目录配置,无需手动指定。
  • 替换link_libraries(glfw)为target_link_libraries(guitest PRIVATE glfw):link_libraries是全局链接设置,在add_executable之后调用无法确保正确关联到你的guitest目标;target_link_libraries是针对特定目标的链接指令,更可靠。
  • 添加target_link_libraries(guitest PRIVATE opengl32):MinGW环境下,GLFW依赖系统的OpenGL库,必须显式链接才能解决未定义引用的问题。

额外检查

确保你的GLFW子模块已经完整拉取:在项目根目录执行

git submodule update --init --recursive

避免因为子模块文件缺失导致的编译问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:35:06