尝试在Steam Deck上安装GLFW

问题描述 投票:0回答:1

我有一个 Steam Deck,想在 Steamdeck 上安装 GLFW,以便 VSCode 可以找到库,我使用 Cmake。我在另一台linux机器上使用Cmake没有任何问题。我认为这与Steam Deck和Steam os有关。

我在 usr/lib/cmake/glfw3 中包含以下文件:

  • glfw3Targets.cmake,
  • glfw3Targets-noconfig.cmake,
  • glfw3ConfigVersion.cmak,
  • glfw3Config.cmake

/usr/include/GLFW 中还有两个头文件,名为:

  • glfw3.h
  • glfw3native.h

我也有这个:

  • /usr/lib/libglfw.so
  • /usr/lib/libglfw.so.3
  • /usr/lib/libglfw.so.3.3

在 main.cpp 文件中,#include 不起作用。

我的 Cmake 文件现在看起来像这样:

cmake_minimum_required(VERSION 3.12)
project(test)

# Add executable
add_executable(test src/main.cpp)

# Specify the path to GLFW include directory
set(GLFW_INCLUDE_DIR "/usr/include" CACHE PATH "Path to GLFW include directory")

# Specify the path to GLFW library directory
set(GLFW_LIBRARY_DIR "/usr/lib" CACHE PATH "Path to GLFW library directory")

# Add GLFW include directory
target_include_directories(test PRIVATE ${GLFW_INCLUDE_DIR})

# Link GLFW library to your executable
target_link_libraries(test ${GLFW_LIBRARY_DIR}/libglfw.so)

也许对 cmake、c 和 linux 有更好了解的人可以帮助我。

提前谢谢您。

我尝试了 cmake 文件与 find() 等的不同组合。查阅了互联网,并使用 Chat GPT 找到了解决方案。 重新安装

sudo pacman -S glfw-x11

glfw 再次出现在蒸汽甲板上。

编辑:

这是我开始构建时的完整错误:

[main] Building folder: game_engine all
[build] Starting build
[proc] Executing command: /usr/bin/cmake --build /home/deck/Programming/game_engine/build --config Debug --target all --
[build] ninja: error: '/usr/lib/libglfw.so', needed by 'test', missing and no known rule to make it
[proc] The command: /usr/bin/cmake --build /home/deck/Programming/game_engine/build --config Debug --target all -- exited with code: 1
[driver] Build completed: 00:00:00.029
[build] Build finished with exit code 1

编辑2:

当我保护 CMakeList.txt 时,我在 VSCode 中收到以下消息:

[main] Configuring project: game_engine 
[proc] Executing command: /usr/bin/cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/g++ -S/home/deck/Programming/game_engine -B/home/deck/Programming/game_engine/build -G Ninja
[cmake] Not searching for unused variables given on the command line.
[cmake] -- Configuring done (0.0s)
[cmake] -- Generating done (0.0s)
[cmake] -- Build files have been written to: /home/deck/Programming/game_engine/build

usr/lib/libglfw.so 的权限:

使用以下命令:

ls -l libglfw.so
lrwxrwxrwx 1 root root 12 Jul 23 2022 libglfw.so -> libglfw.so.3

编辑3:

如果我将

target_link_libraries(test ${GLFW_LIBRARY_DIR}/libglfw.so)
更改为
target_link_libraries(test $usr/lib/libglfw.so.3.3)

权限设置为:-rwxr-xr-x 1 root root 278200 Jul 23 2022 /usr/lib/libglfw.so.3.3

/usr/include/GLFW/glfw3.h 的权限:-rw-r--r-- 1 root root 215860 Jul 23 2022 glfw3.h

我在构建过程中遇到此错误:

[main] Building folder: game_engine 
[build] Starting build
[proc] Executing command: /usr/bin/cmake --build /home/deck/Programming/game_engine/build --config Debug --target all --
[build] [1/2  50% :: 0.022] Building CXX object CMakeFiles/test.dir/src/main.cpp.o
[build] FAILED: CMakeFiles/test.dir/src/main.cpp.o 
[build] /usr/bin/g++   -g -std=gnu++11 -MD -MT CMakeFiles/test.dir/src/main.cpp.o -MF CMakeFiles/test.dir/src/main.cpp.o.d -o CMakeFiles/test.dir/src/main.cpp.o -c /home/deck/Programming/game_engine/src/main.cpp
[build] /home/deck/Programming/game_engine/src/main.cpp:3:10: fatal error: GLFW/glfw3.h: No such file or directory
[build]     3 | #include <GLFW/glfw3.h>
[build]       |          ^~~~~~~~~~~~~~
[build] compilation terminated.
[build] ninja: build stopped: subcommand failed.
[proc] The command: /usr/bin/cmake --build /home/deck/Programming/game_engine/build --config Debug --target all -- exited with code: 1
[driver] Build completed: 00:00:00.054
[build] Build finished with exit code 1
cmake glfw steamos
1个回答
0
投票

我找到了适合我的系统的解决方案。

  1. https://www.glfw.org/
  2. 下载 GWFL 库
  3. 将其放在项目的 cmake 文件级别。

您的项目将如下所示: 图形程序目录: -----源: ---------main.cpp -----CMakeLists.txt -----glfw-3.4

  1. CMake 文件内部如下:
     make_minimum_required( VERSION 3.5 )
    
    project( test )
    
    set(OpenGL_GL_PREFERENCE "GLVND")
    
    find_package( OpenGL REQUIRED )
    
    include_directories( ${OPENGL_INCLUDE_DIRS} )
    
    set( GLFW_BUILD_DOCS OFF CACHE BOOL  "GLFW lib only" )
    set( GLFW_INSTALL OFF CACHE BOOL  "GLFW lib only" )
    set( GLAD_GL "" )
    
    add_subdirectory( glfw-3.4 )
    
    option( USE_GLAD "Use GLAD from GLFW" ON )
    
    if( USE_GLAD )
        include_directories("${GLFW_SOURCE_DIR}/deps")
        set( GLAD_GL "${GLFW_SOURCE_DIR}/deps/glad/gl.h" )
    endif()
    
    
    
    set( TEST_START
            src/main.cpp
            )
    
    add_executable( test  ${TEST_START} ${GLAD_GL} )
    target_link_libraries( test ${OPENGL_LIBRARIES} glfw )

仅当 cmake 说它确实找到多个 OpenGL 库时才需要 set(OpenGL_GL_PREFERENCE "GLVND")

  1. 构建您的项目。

我在以下人员的帮助下构建了此解决方案: https://github.com/juliettef/GLFW-CMake-starter

© www.soinside.com 2019 - 2024. All rights reserved.