Я выполнил шаги, описанные в разделе официальную документацию, загрузил и разархивировал проект metal-cpp в корневой каталог моего проекта. Моя папка выглядит так:
Код: Выделить всё
root
main.cpp
metal-cpp
... all the metal files here
Код: Выделить всё
#define NS_PRIVATE_IMPLEMENTATION
#define CA_PRIVATE_IMPLEMENTATION
#define MTL_PRIVATE_IMPLEMENTATION
#include
#include
#include
int main() {
}
Код: Выделить всё
clang++ -std=c++20 -stdlib=libc++ -g ./main.cpp -o ./main -I/usr/local/include -L/usr/local/lib
Код: Выделить всё
clang++ -std=c++20 -stdlib=libc++ -g ./main.cpp -o ./main -I/usr/local/include -L/usr/local/lib -framework Metal -framework Foundation -framework QuartzCore
Код: Выделить всё
fatal error: 'Foundation/Foundation.hpp' file not found
note: did not find header 'Foundation.hpp' in framework 'Foundation' (loaded from '/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks')
Код: Выделить всё
#include "metal-cpp/Foundation/Foundation.hpp"
#include "metal-cpp/Metal/Metal.hpp"
#include "metal-cpp/QuartzCore/QuartzCore.hpp"
Я знаю, что эти «фреймворки» (не знаю, что здесь имеется в виду, извините, я новичок в C++ и компилирую вещи, выходящие за рамки hello world) не существуют в каком-то целевом месте, например /Library/Developer/CommandLineTools /SDKs/MacOSX.sdk/System/Library/Frameworks, поэтому я тоже попробовал
Код: Выделить всё
clang++ -std=c++20 -stdlib=libc++ -g ./main.cpp -o ./main -I/usr/local/include -I./metal-cpp -L/usr/local/lib -L./metal-cpp -framework Metal -framework Foundation -framework QuartzCore
Я потратил на это часы, и кажется, что это единственные два способа, которыми люди могут добиться успеха. это означает использование Xcode или Cmake. Я уверен, что оба варианта хороши, но я новичок и хочу придерживаться простой компиляции из командной строки, пока я все еще учусь, и не хочу, чтобы непрозрачные и автоматические действия сборок Xcode запутывали то, что на самом деле происходит, а также Мне нравится разрабатывать в VSCode, и я не занимаюсь кроссплатформенными сборками или чем-то необычным, поэтому не хочу использовать Cmake.
По сути, я пытаюсь понять, как мне включите эти файлы Metal при компиляции моего кода!
Подробнее здесь: https://stackoverflow.com/questions/758 ... mmand-line