Могу ли я объединить C++ и Swift в одном пакете Swift, используя диспетчер пакетов Swift? ⇐ C++
Могу ли я объединить C++ и Swift в одном пакете Swift, используя диспетчер пакетов Swift?
Я хотел бы написать один модуль на C++ и создать несколько функций на C, доступных в Swift.
Я несколько озадачен, потому что, что бы я ни делал, SPM настаивает на попытке скомпилировать код C++, как если бы это был Objective-C, и, конечно, не может найти правильные заголовки.
Вот моя попытка.
Структура исходного каталога:
Источники | +-CxxМодуль | | | +-включить | | | | | +-CxxModule.hpp | | | +-CxxModule.cpp | +-СвифтМодуль | +-SwiftModule.swift Манифест Package.swift выглядит следующим образом:
// версия Swift-tools: 5.6 импорт описания пакета пусть пакет = Пакет( имя: "CxxLibrary", продукты: [ .библиотека( имя: "CxxLibrary", цели: ["SwiftModule"]), ], зависимости: [ ], цели: [ .цель( имя: "CxxModule", зависимости: []), .цель( имя: "СвифтМодуль", зависимости: ["CxxModule"], путь: «Источники/SwiftModule» ), ] ) CxxModule.hpp выглядит следующим образом:
#ifndef CxxModule_hpp #define CxxModule_hpp #include extern "C" void printHello(); #endif /* CxxModule_hpp */ CxxModule.cpp выглядит следующим образом:
#include "CxxModule.hpp" void printHello() { // используем что-нибудь из стандартной библиотеки, чтобы убедиться // C++ действительно используется std::cout
Я хотел бы написать один модуль на C++ и создать несколько функций на C, доступных в Swift.
Я несколько озадачен, потому что, что бы я ни делал, SPM настаивает на попытке скомпилировать код C++, как если бы это был Objective-C, и, конечно, не может найти правильные заголовки.
Вот моя попытка.
Структура исходного каталога:
Источники | +-CxxМодуль | | | +-включить | | | | | +-CxxModule.hpp | | | +-CxxModule.cpp | +-СвифтМодуль | +-SwiftModule.swift Манифест Package.swift выглядит следующим образом:
// версия Swift-tools: 5.6 импорт описания пакета пусть пакет = Пакет( имя: "CxxLibrary", продукты: [ .библиотека( имя: "CxxLibrary", цели: ["SwiftModule"]), ], зависимости: [ ], цели: [ .цель( имя: "CxxModule", зависимости: []), .цель( имя: "СвифтМодуль", зависимости: ["CxxModule"], путь: «Источники/SwiftModule» ), ] ) CxxModule.hpp выглядит следующим образом:
#ifndef CxxModule_hpp #define CxxModule_hpp #include extern "C" void printHello(); #endif /* CxxModule_hpp */ CxxModule.cpp выглядит следующим образом:
#include "CxxModule.hpp" void printHello() { // используем что-нибудь из стандартной библиотеки, чтобы убедиться // C++ действительно используется std::cout
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение