glfw3库在带有cmake的clion中导致macOS上的不确定符号
GLFW3 library in CLion with CMake causes undefined symbols on MacOS
i使用cmake从MacOS中的源构建了GLFW,一切顺利,示例正常。但是,当我试图使用clion中的cmake编译程序时,我会收到以下错误:
Scanning dependencies of target triangle
[ 50%] Building CXX object CMakeFiles/triangle.dir/main.cpp.o
[100%] Linking CXX executable triangle
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)
... (There are a huge bunch of errors like this, let me know if you want to read all of them)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [triangle] Error 1
make[2]: *** [CMakeFiles/triangle.dir/all] Error 2
make[1]: *** [CMakeFiles/triangle.dir/rule] Error 2
make: *** [triangle] Error 2
我浏览了互联网和文档,发现我应该用框架参数进行编译,例如:
cc -o myprog myprog.c -lglfw -framework Cocoa -framework OpenGL -framework IOKit -framework CoreVideo
我在命令行上尝试了它,它起作用了。但是,如果我想在Clion(或Cmake)中完成事情,或者如何在CMAKE中使用框架?
我的cmakelists.txt如果您想知道:
cmake_minimum_required(VERSION 3.8)
project(triangle)
set(CMAKE_CXX_STANDARD 11)
find_package(glfw3 REQUIRED)
set(SOURCE_FILES main.cpp)
add_executable(triangle ${SOURCE_FILES})
target_link_libraries(triangle glfw3)
我将其添加到我的cmakelists.txt,现在起作用:
set(CMAKE_CXX_FLAGS "-framework Cocoa -framework OpenGL -framework IOKit -framework CoreVideo")
所以我的cmakelists.txt看起来像这样:
cmake_minimum_required(VERSION 3.8)
project(triangle)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_FLAGS "-framework Cocoa -framework OpenGL -framework IOKit -framework CoreVideo")
find_package(glfw3 REQUIRED)
set(SOURCE_FILES main.cpp)
add_executable(triangle ${SOURCE_FILES})
target_link_libraries(triangle glfw3)
我希望有一种更加"优雅"的方式,但是现在可以解决我的问题。
相关文章:
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- node-gyp 在 macOS 上未正确链接库
- 将无符号char*转换为std::istream*C++
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 用MacOS Mojave编译C++:致命错误:mpi.h:没有这样的文件或目录
- vscode g++链路故障:体系结构x86_64的未定义符号
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- MacOS 上的 Xcode 11 项目不在一个函数中使用 sin 和 cos:未定义的符号"___sincosf_stret"
- 仅在 MacOS 上析构函数的未定义符号
- 在macos上编译代码的未解析符号
- 在 macOS 上以C++构建的未定义符号
- 在带有brew的MacOS上链接时缺少增强ICU正则表达式符号
- C MACOS-编程检索代码符号证书信息
- MacOS LD:找不到符号(x86_64)
- MacOS - 编译 c++ OpenCv 返回体系结构x86_64找不到的符号
- glfw3库在带有cmake的clion中导致macOS上的不确定符号
- 如何使用macOS中的clang从可执行文件中剥离所有本地符号名称
- R (macos 10.8.5), RcppArmadillo:无法找到armadillo库或符号_wrapper_dd
- MacOS Mountain Lion上架构x86_64的未定义符号