gpt4 book ai didi

c++ - CLion CMake ld:找不到库+ Vulkan和OpenGL问题

转载 作者:行者123 更新时间:2023-12-02 10:03:27 25 4
gpt4 key购买 nike

我正在尝试为即将到来的项目使用GLFW和Vulkan进行基本设置。我试图使一个简单的HelloTriangle示例工作。当Vulkan库正常构建时,GLFW在运行程序时抛出ld: library not found for -lglfw3。我也不确定我的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 Build Guide建议,无论您是与应用程序一起编译和链接GLFW,还是将已安装的GLFW链接到您的应用程序,都可以使用glfw目标(不是glfw3)将 GLFW链接到您的应用程序。将您的CMake中的 target_link_libraries() 命令更改为:

target_link_libraries(OpenGLRun PRIVATE glfw)

请注意,在使用诸如此类的基于目标的命令时,应始终提供作用域参数,以告诉CMake这是构建要求,使用要求还是两者。

关于c++ - CLion CMake ld:找不到库+ Vulkan和OpenGL问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61410814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com