Файл не найден в Xcode9.3 - PullRequest
0 голосов
/ 22 мая 2018

В настоящее время я работаю над проектом (приложение с одним представлением) в Swift на Xcode, используя предварительно скомпилированный SDK (Parrot SDK3: http://developer.parrot.com/docs/SDK3/#ios).

Моя проблема заключается в том, что у меня ошибка «файл не найден»тогда как файл существует:

enter image description here

Заголовки, которые я пытаюсь импортировать, записаны в Objective-C (но я хочу импортировать эти заголовки в файл ObjC). Я позаботился о том, чтобы правильно написать путь к заголовочным файлам и избежать циклического импорта. После множества попыток очистки / сборки и множества методов я не знаю, что делать.

1 Ответ

0 голосов
/ 22 мая 2018

Xcode пытается найти заголовочные файлы (.h) с помощью списка «путей поиска».В этом списке может быть несколько путей поиска, например, если в программе #import <a.h> и в списке путей поиска есть пути «/ asd» и «/ qwe», он попытается найти заголовок как «/ asd / ah "или" / qwe / ah "(он пытается оба).

Вы можете добавить собственные пути в настройках сборки проекта Xcode.Там есть раздел «Пути поиска», и там у вас есть «Пути поиска заголовка».Если ваша библиотека находится внутри вашего проекта, тогда полезно использовать в пути переменную $(SRCPATH), которая расширяется до корневой папки вашего проекта, например:

enter image description here

Обратите внимание, что если вы импортируете как <somelib/somefile.h>, и ваш путь в «Пути поиска по заголовку» имеет что-то, заканчивающееся на «include», например «/ some_path / include», тогда заголовок должен быть в «/ some_path / include /».somelib / somefile.h ", что иногда неверно, потому что часто люди помещают заголовочные файлы прямо в" include / ", а не внутри" include / somelib /".

Один из способов решить эту проблему - сделатьсимволическая ссылка, указывающая на папку «include» библиотеки с вашим пользовательским именем, а затем добавьте родительский каталог этой символической ссылки в пути к заголовкам.

Например, если вы создаете пустой каталог «libs / include»/, и вы поместили файлы своей библиотеки в "libs / dist / libARDiscovery /.../ include", затем вы можете создать символическую ссылку "libs / include / libARDiscovery", которая указывает на "lib / dist / libARDiscovery / .../include ", а затем добавить«$ (SRCROOT) / libs / include» для путей поиска заголовка.

...