簡體   English   中英

帶有CMake的CLion中的GLFW3庫在MacOS上導致未定義的符號

[英]GLFW3 library in CLion with CMake causes undefined symbols on MacOS

我使用cmake在MacOS中從源代碼構建了GLFW,一切順利,示例運行正常。 但是,當我嘗試使用cmake in clion編譯程序時,出現以下錯誤:

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)

我希望有一種更“優雅”的方式,但這現在可以解決我的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM