【问题标题】:Including GLSL files in project pane in a QTCreator CMake project在 QTCreator CMake 项目的项目窗格中包含 GLSL 文件
【发布时间】:2012-11-24 11:52:02
【问题描述】:

我正在阅读此处的 OpenGL 教程:OpenGL-Tutorial.org,并希望使用 QTCreator 和 CMake 来构建示例。

打开根CMakeLists.txt 文件会打开项目,然后项目会正确构建/运行(按照网站上的说明进行操作),但片段和顶点文件不会显示在项目窗格中。我尝试将它们重命名为.frag.vert.glsl,但没有任何效果。如果我从文件夹中拖动这些文件,它们会在编辑窗格中以正确的语法突出显示打开。

如何让这些文件显示在项目窗格中?


我在 Ubuntu 20.04 上,并尝试了来自软件包的 QTCreator 和 sourceforge 上的最新源。

【问题讨论】:

  • 他们可能不应该这样做。它们在运行时加载和编译;它们不应该是项目本身的一部分。
  • 万一其他人来这里 - 我用的是 GLFW,这是王牌。

标签: cmake glsl qt-creator


【解决方案1】:
file(GLOB RES_FILES *.frag *.vert *.glsl)

add_executable(exe_name ${RES_FILES} ${C/CPP FILES})

【讨论】:

  • +1 或 file(GLOB_RECURSE RES_FILES *.frag *.vert *.glsl) add_executable(exe_name ${RES_FILES}) 如果您的着色器文件不在您的 cmakelist.txt 文件夹中并且您不在添加常规源文件。
【解决方案2】:

使用 Cmake 在 Qt 项目中包含着色器文件的另一种方法是通过 CMake 命令qt5_add_resourcesOne of the Qt's examples 在使用 qmake 时也是如此。对于我的应用程序,我发现将着色器文件作为资源包含在内更为实用。

因此,为此,您必须准备一个资源文件,例如Shaders.qrc,并在其中添加您要使用的所有着色器文件,例如:

<RCC>
    <qresource prefix="/">
        <file>Stroke.frag</file>
        <file>Stroke.geom</file>
        <file>Stroke.vert</file>
    </qresource>
</RCC>

然后在CMakeLists.txt中,添加资源文件:

qt5_add_resources(SHADER_RSC_ADDED 
    Shaders/Shaders.qrc
)

并将其添加到可执行文件(或库)中:

add_executable(${PROJECT_NAME}
    ${PROJECT_SRCS}
    ${SHADER_RSC_ADDED}
)

重新构建后,项目树将如下所示:

【讨论】:

    【解决方案3】:

    您可以将着色器文件添加为.pro 文件中的其他文件。

    OTHER_FILES += \
        simple.frag \
        simple.vert
    

    您还应该考虑对着色器文件使用 QT 资源管理。我最近在 Qt 中创建了一个简单的 OpenGL 3.2 示例项目,其中还展示了如何使用 Qt 进行着色器文件的资源管理。该项目可在此处获得:https://github.com/mortennobel/QtOpenGL3.2Core

    警告:该项目仅在 Windows 和 OS/X 上进行测试。

    【讨论】:

    • 我没有 .pro 文件,因为我使用 CMake 编译程序,而不是 qmake。
    猜你喜欢
    • 1970-01-01
    • 2012-11-21
    • 2012-07-07
    • 2023-03-17
    • 1970-01-01
    • 2012-04-27
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多