CLion CMake ld: library not found + Vulkan 和 OpenGL 问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CLion CMake ld: library not found + Vulkan 和 OpenGL 问题相关的知识,希望对你有一定的参考价值。

我正试图为一个即将到来的项目使用GLFW和Vulkan进行基本设置。我试图让一个简单的HelloTriangle示例工作。当Vulkan库正常构建时,GLFW抛出了一个类似于 "HelloTriangle "的例子。ld: library not found for -lglfw3 在运行程序时,我也不确定我的HelloTriangle是否是一个工作的例子。我也不确定我的HelloTriangle例子是否是一个有效的例子;这是我看到的测试Vulkan的最基本的例子。这是我的CMakeList.txt。

cmake_minimum_required(VERSION 3.16)
project(OpenGLRun)

set(CMAKE_CXX_STANDARD 14)
set(glfw3_DIR /usr/local/Cellar/glfw/3.3.2/lib/cmake/glfw3)

add_executable(OpenGLRun main.cpp)

find_package(vulkan REQUIRED)
find_package(glm REQUIRED)
find_package(OpenGL REQUIRED)
find_package(glfw3 REQUIRED)

target_link_libraries(OpenGLRun Vulkan::Vulkan)
target_link_libraries(OpenGLRun glm)
target_link_libraries(OpenGLRun OpenGL::GL)
target_link_libraries(OpenGLRun glfw3)

还有我试图运行的main.cpp示例代码,以证明一切都在工作。

#define GLFW_INCLUDE_VULKAN
#include <GLFW/glfw3.h>

#include <iostream>
#include <stdexcept>
#include <cstdlib>

const uint32_t WIDTH = 800;
const uint32_t HEIGHT = 600;

class HelloTriangleApplication 
public:
    void run() 
        initWindow();
        initVulkan();
        mainLoop();
        cleanup();
    

    private:

        GLFWwindow* window;

        void initWindow() 
            glfwInit();

            glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
            glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE);

            GLFWwindow *window = glfwCreateWindow(WIDTH, HEIGHT, "Vulkan", nullptr, nullptr);
        

private:
    void initVulkan() 

    

    void mainLoop() 
        while (!glfwWindowShouldClose(window)) 
            glfwPollEvents();
        
    

    void cleanup() 
        glfwDestroyWindow(window);

        glfwTerminate();
    
;

int main() 
    HelloTriangleApplication app;

    try 
        app.run();
     catch (const std::exception& e) 
        std::cerr << e.what() << std::endl;
        return EXIT_FAILURE;
    

    return EXIT_SUCCESS;

最后,对于未来,你会推荐C++CMake中的包管理器吗?

先谢谢你

答案

GLFW 建造指南 表明无论你是在编译和链接GLFW与你的应用程序,还是链接一个 安装 在您的申请中加入GLFW,您可以 联系 GLFW到您的应用程序,使用 glfw 瞄准 glfw3). 改变 target_link_libraries() 命令改为这个。

target_link_libraries(OpenGLRun PRIVATE glfw)

注意,你应该 始终 当使用这样的基于目标的命令时,提供scoping参数,以告诉CMake这是一个构建需求,还是一个使用需求,或者两者都是。

以上是关于CLion CMake ld: library not found + Vulkan 和 OpenGL 问题的主要内容,如果未能解决你的问题,请参考以下文章

Clion中的CMAKE配置OpenCv

VSCode 找不到包,但 CLion 可以(CMake)

CMake 找不到 Boost_LIBRARIES 变量

clion中cmake导入的是哪个目录

在 Windows 的 clion 中更新 cmake

虽然安装了CMake并将其添加到Path,但CLion无法检测到CMake