opengl 如何在cmake中链接库

iecba09b  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(189)

我正在尝试将我在Linux中开发的C++项目传递到Windows。
我正在使用cLion,因此是cMake。
这是我Cmake

cmake_minimum_required(VERSION 3.10) # common to every CLion project
    project(PackMan) # project name

    set(GLM_DIR C:/libs/GLM/glm)
    set(GLAD_DIR C:/libs/GLAD/include)

    include_directories(${GLM_DIR})
    include_directories(${GLAD_DIR})

    find_package(PkgConfig REQUIRED)
    pkg_search_module(GLFW REQUIRED glfw)

    ADD_LIBRARY(mainScr
            scr/Carte.cpp
            scr/Enemy.cpp
            scr/MoveableSquare.cpp
            scr/Palette.cpp
            scr/Player.cpp
            scr/Square.cpp
            scr/Wall.cpp
            scr/glad.c
    )

    add_executable(PackMan scr/main.cpp)
    target_link_libraries(PackMan libglfw3.a)
    target_link_libraries(PackMan mainScr)

每个包含文件夹都工作正常。
我复制粘贴dll文件ro systeme32文件夹内的windows文件夹。所以就像我说的,在我的项目,我有所有的外部包括,我可以看到哪里的定义和一切,但似乎我不能链接他们与dll。
我得到的错误

-- Checking for one of the modules 'glfw'
CMake Error at C:/Program Files/JetBrains/CLion 2022.1.1/bin/cmake/win/share/cmake-3.22/Modules/FindPkgConfig.cmake:890 (message):
  None of the required 'glfw' found
Call Stack (most recent call first):
  CMakeLists.txt:12 (pkg_search_module)

-- Configuring incomplete, errors occurred!
See also "C:/Users/tanku/Documents/Projects/PackMan/cmake-build-debug/CMakeFiles/CMakeOutput.log".

当我试着建造的时候。

bpzcxfmw

bpzcxfmw1#

您这样做方式不对您应该使用find_package而不是硬编码路径
大致应该是这样的:

find_package(PkgConfig REQUIRED)
pkg_search_module(GLFW REQUIRED glfw3)

add_library(mainScr
        scr/Carte.cpp
        scr/Enemy.cpp
        scr/MoveableSquare.cpp
        scr/Palette.cpp
        scr/Player.cpp
        scr/Square.cpp
        scr/Wall.cpp
        scr/glad.c)

target_link_libraries(mainScr PUBLIC ${GLFW_LIBRARIES})
target_include_directories(mainScr PUBLIC ${GLFW_INCLUDE_DIRS})

add_executable(PackMan scr/main.cpp)

如果GLFW安装正确,这应该可以工作。在Windows上,您可以使用vcpkg来管理c++库。
这是根据GLFW文档完成的-未对此进行测试。

相关问题