C++ 当您需要包含OpenGL库时,如何在Clion中运行程序

C++ How to run programs in Clion when you need to include OpenGL libraries?

本文关键字:Clion 程序 运行 库时 OpenGL 包含 C++      更新时间:2023-10-16

您好,我需要使用 OpenGL,并希望在 Clion 中创建我的项目。但是 Clion 无法编译和运行我的项目,因为我需要包含库。我可以创建自己的生成文件并在终端中运行该程序,但我想在 IDE 中执行此操作。我怎样才能做到这一点?

首先,确保使用在 clion/cmake 中配置的编译器正确安装了所有库。假设你有一个新的CMakeList.txt比如

 cmake_minimum_required(VERSION 3.3.2)
 project(MyGL CPP)
 add_executable(demo-run main.cpp)

要链接您的库,您需要两件事。首先告诉编译器在哪里可以找到包含文件,然后告诉要链接哪些库。您可以像本地安装一样对本地安装进行硬编码

 target_link_libraries(demo-run path/to/glfw.lib path/to/opengl.lib path/to/jpeg.lib ...)
 target_include_directories(demo-run PRIVATE path/to/glfw/include path/to/opengl/include path/to/jpeg/include ...)

但是,这不是非常可移植,如果您想使用其他编译器或另一台机器,您的项目文件将失败。相反,您可以使用cmake的软件包系统

find_package(PkgConfig REQUIRED)
pkg_search_module(GLFW REQUIRED glfw3)
find_package(JPEG REQUIRED)
find_package(GLEW REQUIRED)
find_package (OpenGL REQUIRED)
find_package (GLM REQUIRED)
target_link_libraries(demo-run ${GLFW_LIBRARIES} ${GLEW_LIBRARIES} ${JPEG_LIBRARIES} ${OPENGL_LIBRARIES})
target_include_directories(demo-run PRIVATE ${GLFW_INCLUDE_DIRS} ${GLEW_INCLUDE_DIR} ${JPEG_INCLUDE_DIR} ${OPENGL_INCLUDE_DIR} ${GLM_INCLUDE_DIR})

glfw 部分有点棘手,只适用于 linux,我想见 http://www.glfw.org/docs/3.0/build.html。

此代码根本没有经过测试,您可能需要指定一些环境变量,以便 cmake 可以找到包或提供其他查找脚本,如 https://github.com/lighttransport/nanogi/blob/master/cmake/FindGLM.cmake。

我建议使用CMake构建工具,该工具可以为您生成Makefile,并且也直接由clion支持。当你打开包含 CMakeLists.txt (CMake 项目文件( 的目录时,它应该被自动加载和编译(如果不只是点击构建(

一个非常简单的示例 CMake 项目如下所示

cmake_minimum_required (VERSION 2.8.9)
project (OpenGl-Stuff)
include_directories(src)
add_executable(your-binary src/your-code.c src/your-code.h)
target_link_libraries(your-binary opengl) 
# target_link_libraries will search for libopengl on standard system paths, 
# maybe the library is not called libopengl, then you have to adjust the name above

此 cmake 项目将为您生成二进制文件并将其链接到 OpenGL