【发布时间】:2020-08-28 05:50:24
【问题描述】:
我最近买了一台 Macbook,我想开始为一个项目编写一些 OpenGL 代码。
规格
- MacOS
- Macbook pro 16 英寸 2019
- 克利翁
- glfw3(预编译的 64 位二进制文件)
CMake 没有抱怨,但是一旦我开始编译,我就会收到以下错误
/Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake --build /Users/arnesix/Documents/dev/c++/graphics/cmake-build-debug --target graphics -- -j 12
[ 50%] Linking CXX executable graphics
Undefined symbols for architecture x86_64:
"_CFArrayAppendValue", referenced from:
__glfwInitJoysticksNS in libglfw3.a(cocoa_joystick.m.o)
_matchCallback in libglfw3.a(cocoa_joystick.m.o)
"_CFArrayCreateMutable", referenced from:
__glfwInitJoysticksNS in libglfw3.a(cocoa_joystick.m.o)
_matchCallback in libglfw3.a(cocoa_joystick.m.o)
"_CFArrayGetCount", referenced from:
__glfwSetVideoModeNS in libglfw3.a(cocoa_monitor.m.o)
__glfwPlatformGetVideoModes in libglfw3.a(cocoa_monitor.m.o)
_matchCallback in libglfw3.a(cocoa_joystick.m.o)
_closeJoystick in libglfw3.a(cocoa_joystick.m.o)
__glfwPlatformPollJoystick in libglfw3.a(cocoa_joystick.m.o)
"_CFArrayGetValueAtIndex", referenced from:
__glfwSetVideoModeNS in libglfw3.a(cocoa_monitor.m.o)
__glfwPlatformGetVideoModes in libglfw3.a(cocoa_monitor.m.o)
_matchCallback in libglfw3.a(cocoa_joystick.m.o)
_closeJoystick in libglfw3.a(cocoa_joystick.m.o)
__glfwPlatformPollJoystick in libglfw3.a(cocoa_joystick.m.o)
"_CFArraySortValues", referenced from:
_matchCallback in libglfw3.a(cocoa_joystick.m.o)
我从https://www.glfw.org/download.html 下载的二进制文件只包含 64 位二进制文件。
#include <iostream>
#include <glfw3.h>
int main() {
std::cout << glfwInit() << std::endl;
return 0;
}
最后,我的 Cmake 偏好
我很想知道为什么会一直发生这种情况以及我应该如何解决这个问题。
【问题讨论】:
-
请在问题中添加文本形式的代码和错误消息,而不是图像。这是堆栈溢出的要求。另见How to Ask。
-
不相关:您应该使用设置包含和链接器目录的
target_*变体,因为它们仅适用于该目标而不是所有内容。
标签: c++ macos cmake clion glfw