gpt4 book ai didi

c++ - CMake,GLFW3 OSX 链接错误

转载 作者:行者123 更新时间:2023-11-30 05:21:26 25 4
gpt4 key购买 nike

我在 CLion 的简单 C++ 项目中链接 GLFW 库已经有一段时间了。我已经解决了现有的问题及其解决方案,但它们似乎对我的情况没有帮助。我的 CMakeLists 文件如下:

cmake_minimum_required(VERSION 3.6)
project(TestGame)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -v")

find_library(carbon_lib Carbon)
find_library(cocoa_lib Cocoa)
find_library(iokit_lib IOKit)
find_library(corevideo_lib CoreVideo)
find_library(opengl_lib OpenGL)
find_library(corefoundation_lib CoreFoundation)

set(frameworks
${carbon_lib}
${cocoa_lib}
${iokit_lib}
${corevideo_lib}
${opengl_lib}
${corefoundation_lib}
)

file(GLOB sources
"include/*.hpp"
"src/*.cpp"
"src/application/*.cpp"
"src/controlling/*.cpp"
"src/helper/*.cpp"
"src/render/*.cpp"
"src/texturing/*.cpp"
"src/translations/*.cpp"
"test/*.cpp"
)

find_package(GLEW REQUIRED)
find_package(GLFW3 REQUIRED)
find_package(SDL2 REQUIRED)
find_package(GLM REQUIRED)
find_package(SOIL REQUIRED)

include_directories(${GLEW_INCLUDE_DIRS} ${GLFW_INCLUDE_DIR} ${GLM_INCLUDE_DIR} ${SDL2_INCLUDE_DIR} ${SOIL_INCLUDE_DIRS} ${GLM_INCLUDE_DIRS})

add_executable(GameMain ${sources})
target_link_libraries(GameMain ${GLEW_LIBRARIES} ${GLFW_LIBRARIES} ${GLM_LIBRARIES} ${SDL2_LIBRARY} ${SOIL_LIBRARIES} ${frameworks})

我已经使用 brew 安装了 GLFW3 和 GLFW2(显然 Cocoa 需要 v2,我不知道为什么)(brew install glfw2 或 brew install glfw3 - 使用 --build-bottle --static 它不起作用,因为内部 cmake 错误),也尝试从最新来源手动编译 GLFW。

请注意,我最近开始学习有关 C++/CMake/CLion 的知识,所以我可能会忘记这里的一些重要信息 - 请随时询问更多信息,以便我添加这些信息。

同样值得注意的是,在 Sierra OSX(目前正在运行最新的 BETA)更新之前,我的应用程序运行得非常好,没有链接器错误。链接器错误如下:

Undefined symbols for architecture x86_64:
"_glfwCreateWindow", referenced from:
Application::Application(char const*, int, int) in Application.cpp.o
"_glfwMakeContextCurrent", referenced from:
Application::Application(char const*, int, int) in Application.cpp.o
"_glfwWindowHint", referenced from:
Application::Application(char const*, int, int) in Application.cpp.o
"_glfwWindowShouldClose", referenced from:
Application::run() in Application.cpp.o

这些与创建窗口的主要入口文件有关。 CLion 不会就包含目录时遗漏的任何内容提出任何建议。我尝试使用/不使用列出的所有这些框架,找到了一个解决方案,其中包含 Cocoa/IOKit/CoreVideo/OpenGL 以使 GLFW3 工作。还尝试包括 Carbon/CoreFoundation,因为一些解决方案与这些有关。

实际上没有任何效果。

最佳答案

http://www.glfw.org/docs/latest/build_guide.html#build_link_cmake_package

你需要添加:

target_link_libraries(LearnGLSL ..any other libraries... glfw)

关于c++ - CMake,GLFW3 OSX 链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40119094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com