Я придумал (hacki sh, не идеальное!) Решение для всех, у кого также есть эта проблема. Хитрость заключается в том, чтобы просто сохранить локальное дерево зависимостей всех пакетов, а затем просто обойти его в C. Реализация:
1. Пакет, который должен импортировать заголовки C локально, зависит от пакета, содержащего заголовки C. Таким образом мы можем гарантировать стабильную структуру папок:
dependencies:[
.package(path: "./NativeCodePackage"),
.package(path: "./OtherPackage")
],
2. В другом пакете импортируйте нужные заголовки из первого пакета, просто перейдя к ним, например:
#define STR_IMPL(A) #A
#define STR(A) STR_IMPL(A)
#define NATIVEHEADERSDIR ../../../../../NativeCodePackage/Sources/NativeCodePackage/include
3. Наконец, просто импортируйте:
#include STR(NATIVEHEADERDIR/Maths/Vector.h)
Если вы хотите увидеть работающую реализацию этого, посмотрите мой проект движка Swift, где я реализую это решение: https://github.com/forbiddencactus/Galah