【问题标题】:How to create a metal-cpp project?如何创建 metal-cpp 项目?
【发布时间】:2023-02-25 04:37:13
【问题描述】:

我正在尝试学习金属,因为我已经熟悉 C++,所以我正在尝试使用 metal-cpp 进行学习。我不是经验丰富的 macOS 开发人员,但我过去曾在 Xcode 中使用 OpenGL 和 C++ 作为主要语言的项目中工作过。

我的问题是如何在 C++ 中设置项目并使用 Metal 渲染到窗口或视图。我找到了一些关于如何在 Swift 或 Objective-C 中执行此操作的教程,但在 C++ 中没有。几年前,我记得用 OpenGL 做过类似的事情,如果我没记错的话,必须在 Objective-C 中设置视图,然后将 OpenGL 上下文传递给 C++。

对于这种情况(在 Swift/Obj-C 中设置视图,然后将设备传递给 C++),这会是一个好方法吗?我也对我需要执行此操作的项目类型或其他文件(即故事板等)感到有些迷茫。截至目前,我只有一个与 Foundation、Mmetal、MetalKit 和 QuartzCore 框架相关联的命令行工具项目;加上 metal-cpp 链接和编译。

【问题讨论】:

    标签: c++ swift objective-c metal metalkit


    【解决方案1】:

    我在 Mac 上做各种 C++ 项目,我个人会坚持使用 cmake 而不是 XCode,尤其是我可能会从 cmake 生成 XCode 项目(但通常我使用 Ninja Multi-Config 生成器)。 以下示例是一个最小的 cmake 项目,它设置解压到主目录(包含 CMakeLists.txt 文件)的 metal-cpp。

    cmake_minimum_required (VERSION 3.20)
    project (metal_cpp_rocks)
    
    set(CMAKE_CXX_STANDARD 17)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Werror")
    
    find_library(APPLE_FWK_FOUNDATION Foundation REQUIRED)
    find_library(APPLE_FWK_QUARTZ_CORE QuartzCore REQUIRED)
    find_library(APPLE_FWK_METAL Metal REQUIRED)
    
    add_executable(metal_cpp_rocks
      main.cpp
    )
    
    target_include_directories(metal_cpp_rocks
      SYSTEM PUBLIC ${CMAKE_SOURCE_DIR}/metal-cpp
    )
    
    target_link_libraries(metal_cpp_rocks
      ${APPLE_FWK_FOUNDATION}
      ${APPLE_FWK_QUARTZ_CORE}
      ${APPLE_FWK_METAL}
    )
    

    和最小的 main.cpp

    #define NS_PRIVATE_IMPLEMENTATION
    #define CA_PRIVATE_IMPLEMENTATION
    #define MTL_PRIVATE_IMPLEMENTATION
    
    #include <Foundation/Foundation.hpp>
    #include <Metal/Metal.hpp>
    #include <QuartzCore/QuartzCore.hpp>
    
    int main()
    {
      MTL::Device* device = MTL::CreateSystemDefaultDevice();
      device->release();
      return 0;
    }
    

    构建并运行(在主目录中):

    cmake -S . -B build -G "Ninja Multi-Config"
    cmake --build build --config Release
    ./build/Release/metal_cpp_rocks
    

    如何从 cmake 生成 XCode 项目以便在开发期间将 XCode 用作 IDE 的示例:

    cmake -S . -B build_xcode -G "Xcode"
    

    现在打开从 XCode 生成的 build_xcode/metal_cpp_rocks.xcodeproj 并以通常的方式执行所有操作,但请记住不要在 XCode 中更改项目本身 - 修改 cmake 项目并重新生成 XCode 项目。

    【讨论】:

    • 非常感谢!您知道如何设置窗口或视图并使用设备对其进行渲染吗?
    • 尝试这个时我遇到了fatal error: 'Foundation/Foundation.hpp' file not found
    • @ChrisSeymour 您需要从 Apple 的开发者网站下载 metal-cpp。 developer.apple.com/metal/cpp
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-12
    • 2021-04-21
    • 1970-01-01
    • 2013-07-09
    • 1970-01-01
    相关资源
    最近更新 更多