2012-02-29 4 views
11

Я новичок в подпроектах Xcode. В моем проекте приложения iPhone MyProject, я пытаюсь реорганизовать некоторый общий код в проект статической библиотеки под названием MyLibrary. После создания MyLibrary и переместите код, MyProject больше не компилируется. Ошибка заключается в том, что MyProject не может видеть файлы .h в MyLibrary.Xcode 4.2: Как импортировать файл .h из подпроекта

Ошибка MyLibraryConfig.h: No such file or directory приходит в линейке:

#import "MyLibraryConfig.h" 
  • Как импортировать MyLibrary .h файлы в MyProject?
  • Какая здесь самая лучшая практика? Предполагая, что у меня есть несколько таких библиотек, утомительно добавлять их в пути поиска заголовков к родительскому проекту.

ответ

9

Возможно, файл заголовка также находится в подкаталоге.

Представьте себе следующую установку каталога:

- Desktop 
    - MyProject 
     - MyProject.xcodeproj 
     - main.m 

     - MyLibrary 
      - MyLibrary.xcodeproj 
      - MyHeaderFile.h  <-- wanted header file 

Если main.m имеет такое содержание:

#include "MyHeaderFile.h" 

int main() { 
    return 0; 
} 

Компилятор (GCC) будет думать, что MyHeaderFile.h расположен в тот же каталог, что и main.m, из которого он включен. Чтобы сообщить компилятору, что вы имеете в виду заголовочный файл в подпапке, вы можете сделать две вещи.

  • Вы можете добавить каталог в компилятор gcc, в котором говорится: «Эй, также смотрите в эту папку». Вы можете сделать это, используя флаг -iquote myFolder.
  • Вы можете включить каталог в операторе include-: #include "MyLibrary/MyHeaderFile.h"

Там, конечно, может быть еще одна проблема, но это швы как самый простой один.

+2

Для первой пули, что эй, также смотрите в этой настройке папки является HEADER_SEARCH_PATHS в настройках сборки. – rooftop

+0

@ lef2, rooftop: Спасибо за ответ. Однако, любой более простой способ? Предполагая, что у меня есть несколько таких библиотек, утомительно добавлять их в пути поиска заголовков к родительскому проекту. – Shameem

+0

Ок, пути поиска заголовка имеют рекурсивный флаг. Это выглядит хорошо. через http://www.cocoanetics.com/2011/12/sub-projects-in-xcode/. – Shameem

25

В настройках сборки -> Header Search Path -> Добавить запись ниже

$ (SRCROOT) и пометить его как рекурсивный.

enter image description here

+2

Ваш маленький скрин-кадр спас меня ВЕСЬ МНОГО! –

+0

Спасибо ..просто переход к рекурсивному работал для меня! –

+0

Определенно лучшее решение! –

Смежные вопросы