Я не могу импортировать /opt/local/include/ncurses.h MacPorts в мой проект Swift. Он конфликтует с macos SDK / usr / include / curses.h. Любой намек? - PullRequest
0 голосов
/ 12 июня 2019

РЕДАКТИРОВАТЬ: получить негативы для такого подробного и ЧЕСТНОГО вопроса?Иногда я не получаю переполнение стека.Действительно.


Привет, я пытаюсь создать PoC, используя Swift 5 (Xcode 10.2.1) и современную версию ncurses (в данном случае, MacPorts, около 6.1.2018XXXX).)

Мой Poc не имеет кода на данный момент, так как мои проблемы начинаются до того, как я смог добавить какую-либо разумную строку в мои файлы .swift.

До сих пор я делал следующие вещи:

1.- У меня установлена ​​надлежащая рабочая библиотека MacPorts ncurses: это означает, что «sudo port install htop» может без проблем собрать приложение «htop», доказав тем самым, что моя библиотека ncurses установлена ​​правильно (.hфайлы, кажется, развернуты в / opt / local / include / directory)

2.- Я создаю пустую программу-приложение CONSOLE APPLICATION (используя собственный мастер Xcode 10.2.1).Это займет всего 4 щелчка мышью, и вы получите какой-нибудь глупый файл main.swift «Hello world».

3.- Я создаю соединительный заголовок для импорта моих файлов .h (в данном случае ncurses.h).Содержимое этого соединительного заголовка будет / должно быть примерно таким:

#import "/opt/local/include/ncurses.h"

4.- Я компилирую и запускаю глупую пустую программу swift "hello world", и я получаю тонны несколько "ожидаемых" ошибок,Примерно так: «Символ Darwin / SDK curses.h xxxxxxxxx также определен внутри вашего файла /opt/local/ncurses.h.(это не буквальная ошибка, которую я получаю, вы просто поняли)

Итак, мой вопрос:

Можно ли отключить / удалить Darwin / internal / MacOs SDK curses.h из моего проекта XCodeгде-то определение, чтобы мой соединительный заголовок видел только одну копию моего файла 2 (n) curses.h (который должен быть моим macports)?

Я пробовал много вещей, описанных в этом другом потоке, ноне повезло: Как отключить заголовок "curses.h" (часть "stdio.h в Xcode 6.3 OSX Yosemite), чтобы избежать конфликтующих объявлений функций

Специально опция" Включить модули ", которое, независимо от значения, которое вы установили, похоже, ничего не делает.

Кстати: я знаю, что когда я смогу решить эту проблему с заголовками .h, мне, вероятно, потребуется добавить дополнительную опцию -lib linking вВкладка «фаза сборки» (?) внутри XCode, но я постараюсь управлять собой, когда наступит этот момент.

На данный момент я обеспокоен тем, что «я не хочу удалять поддержку проклятий Apple Internal Macos SDK /файлы из моего проекта XCode ".evable?

PS: я использую Mojave 10.4.4 без проблем

Ответы [ 2 ]

1 голос
/ 17 июня 2019

У меня такие же проблемы, хотя я пытаюсь использовать ncurses через менеджер пакетов Swift. Несмотря на то, что я активно пытался найти решение, я пока не добился успеха. Проверьте мой вопрос на всякий случай: Диспетчер пакетов Swift не может скомпилировать ncurses, установленные через Homebrew

0 голосов
/ 26 июня 2019

Этот ответ должен дать вам всю информацию, необходимую для его работы :) https://stackoverflow.com/a/56728436/554972

...