Sự cố biên dịch, xây dựng hoặc lưu trữ với Xcode 4 (và các phần phụ thuộc)


96

Câu hỏi này đã phát triển trong vài tuần qua để đề cập đến các vấn đề chung hơn với (và các dự án nâng cấp hình thành cũ hơn S).

Tuy nhiên, nhiều vấn đề có thể được giải quyết bằng cách làm theo cùng một bộ hướng dẫn.

Nếu bạn gặp bất kỳ sự cố nào sau đây, hãy thử các phương pháp trong câu trả lời được chấp nhận:

  • Xcode 4 không thể lưu trữ ứng dụng
  • Xcode 4 tạo một kho lưu trữ không sử dụng được
  • Xcode 4 không tạo .ipa
  • Xcode 4 không thể biên dịch do lỗi bộ xử lý trước
  • Xcode 4 không thể tìm thấy tiêu đề
  • Mã hoàn thành của Xcode 4 không hoạt động
  • Dự án phụ thuộc sẽ không biên dịch
  • Thêm phụ thuộc gây ra bất kỳ vấn đề nào ở trên

Câu hỏi gốc

Tiêu đề: "không tìm thấy tệp sự cố từ vựng hoặc bộ xử lý trước" trong Xcode 4

Tôi có một dự án trong Xcode 4 sẽ xây dựng tốt và chạy trên thiết bị và trình mô phỏng nhưng khi cố gắng Lưu trữ nó bị lỗi khi tìm kiếm tệp tiêu đề được liên kết với thư viện tĩnh:

In file included from /Volumes/Development/Path/LBProject/LBProject/LBProject-Prefix.pch:15:
In file included from /Volumes/Development/Path/LBProject/LBFDefines.h:23:
In file included from /Volumes/Development/Path/LBProject/Classes/LBProjectAppDelegate.h:11:
In file included from /Volumes/Development/Path/LBProject/LBProject/../FKNDirectory/FKNDirectoryManager.h:10:
/Volumes/Development/Path/LBProject/LBProject/../FKNDirectory/FKNDataModel.h:11:9: fatal error: 'Merchant.h' file not found [1]
 #import "Merchant.h"
         ^
1 error generated. 

Xcode đưa ra lỗi

lexical or preprocessor issue file not found 

Nhiều Google đã cho thấy nhiều người đang gặp vấn đề này nhưng không có giải pháp. Bất cứ ai cũng có một bản sửa lỗi hoặc thậm chí một manh mối.

Cập nhật: Các user headerđường dẫn tìm kiếm được đặt thành ${BUILT_PRODUCTS_DIR}trong tất cả các cấu hình. Nó xây dựng tốt bằng cách sử dụng bất kỳ cấu hình nào ngoại trừ khi lưu trữ.

Cập nhật 2: Merchant.h là lớp Dữ liệu lõi được tạo tự động và do đó bên trong .xcdatamodeldgói, tuy nhiên các tiêu đề đều được sao chép vào thư mục tiêu đề công cộng khi thư viện được xây dựng.

Câu trả lời:


119

NB: Các bước dưới đây sẽ giải quyết được 90% sự cố lưu trữ Xcode của bạn, tuy nhiên, từ các nhận xét, bạn nên thử thoát Xcode trước. Điều này có thể giúp bạn tiết kiệm hàng giờ chỉnh sửa cài đặt.

  1. Kiểm tra "đường dẫn tiêu đề người dùng" có đúng không (Thêm "" vào đường dẫn cho khoảng trắng, cả trong dự án và phần phụ thuộc của bạn)
  2. Đặt "Luôn tìm kiếm đường dẫn người dùng" thành CÓ
  3. Tạo một cuộc gọi nhóm "Tiêu đề lập chỉ mục" trong dự án của bạn và kéo tiêu đề vào nhóm này, KHÔNG thêm vào bất kỳ mục tiêu nào khi được nhắc. Điều này bao gồm bất kỳ tiêu đề nào bên trong .xcdatamodeld của bạn , bạn sẽ cần nhấp chuột phải và xem nội dung gói để tìm chúng.
  4. Đối với tất cả các phần phụ thuộc, hãy đặt cài đặt bản dựng "Bỏ qua cài đặt" thành "Có"
  5. Di chuyển bất kỳ tiêu đề "Công khai" nào trong các giai đoạn Xây dựng thành "Dự án"
  6. Đặt Cài đặt xây dựng "Thư mục cài đặt" trên Mục tiêu của bạn thành$(LOCAL_APPS_DIR)
  7. Thay đổi cài đặt xây dựng mục tiêu "quét tất cả các tệp nguồn cho bao gồm" thành CÓ. ( liên kết )
  8. Với các phiên bản mới hơn của Xcode (> 4.2), bạn có thể muốn đọc câu hỏi này liên quan đến không gian làm việc.
  9. Xóa thủ công các tệp project.xcworkspace tạo thành tất cả các dự án được tham chiếu

28
Đề xuất cuối cùng là tất cả những gì tôi cần để khắc phục sự cố này. Đóng và mở lại Xcode.
Chris Miles

1
Yup, điều tương tự đối với tôi, chỉ cần khởi động lại Xcode. Nó xảy ra sau khi tôi đổi tên và di chuyển các tệp trong dự án.
Maurizio

Tôi cũng vậy. Không có gì khó chịu hơn một lỗi không nên tồn tại. Thật tuyệt khi nó được giải quyết dễ dàng như vậy.
maxedison

3
Lưu ý với Three20 người dùng di chuyển các dự án cũ từ xcode3 sang xcode4: bạn (có thể) phải thay đổi xcode Preference / location / advanced / -> Location do target chỉ định. Xem stackoverflow.com/questions/5261447/… để biết thêm
Ben G

1
Thánh tào lao về số 1. Các trích dẫn! Tất nhiên, môi trường $ (SRC_ROOT) "có thể" giải quyết bằng một đường dẫn có dấu cách. Không thể tìm ra lý do tại sao nén dự án của tôi và giải nén ở nơi khác dẫn đến lỗi xây dựng!
Erik Kerber,

13

Tôi đã gặp vấn đề tương tự trong XCode 4: "Không tìm thấy vấn đề về bộ xử lý hoặc bộ xử lý trước MyFile.h". Tuy nhiên, MyFile.m không phải là một thư viện tĩnh, chỉ là một lớp tiêu chuẩn. Và MyFile.m và MyFile.h đã được đưa vào đúng cách và được lập chỉ mục trong dự án.

Vì vậy, ... tôi thoát XCode và Trình mô phỏng, sau đó khởi động lại chúng và sự cố đã biến mất.


Tôi đã gặp trường hợp tương tự, nhưng lỗi không mong muốn được hiển thị do tham chiếu không chính xác đến thuộc tính không liên quan nằm trong cùng một lớp (về cơ bản tôi đã quên sử dụng self.) - một điều kỳ lạ.
JARC

11

Tôi thấy rằng sự cố đã biến mất khi tôi thay đổi cài đặt bản dựng đích "quét tất cả các tệp nguồn để tìm bao gồm" từ không thành có.


6

Tôi đã có thể giải quyết vấn đề này mà không có bất kỳ thay đổi nào đối với bất kỳ cài đặt bản dựng nào bằng cách sao chép các tệp .h vào thư mục của Dự án trong công cụ tìm. Tôi KHÔNG thêm chúng vào dự án. Chỉ cần có chúng trong thư mục hệ thống tệp của dự án dường như là đủ để cho phép liên kết ngầm của Xcode hoạt động bình thường. Thêm chi tiết tại đây .


+1 Tôi đã thêm một liên kết đến câu hỏi vì anh ấy đã chấp nhận câu trả lời, cảm ơn vì thông tin!
Richard Stelling

4

Tôi đã có một vấn đề kỳ lạ như thế này. Thay đổi "Quét tất cả các tệp tài nguyên ..." thành Có không hữu ích. Tôi đã xem qua các Đường dẫn Tìm kiếm Khung và nhận thấy rằng tôi đã

  • $ (kế thừa)
  • "$ (SRCROOT)"
  • "$ (SRCROOT) / của tôi / đúng / đường dẫn"

Nó có vẻ đúng nhưng vẫn thất bại. Sau đó, tôi đã thử sắp xếp lại thứ tự của 2 & 3 và đột nhiên nó hoạt động tốt. Vì vậy, không chắc tại sao đó lại là hickup, nhưng muốn thêm nó vào danh sách những thứ cần thử trong trường hợp nó giúp ích cho người khác.


4

Giải pháp của tôi là thay đổi

#import "HeaderFile.h"

đến

#import <FrameworkName/HeaderFile.h>

và mọi thứ bắt đầu hoạt động trở lại. Điều bất thường là nó đã ngừng hoạt động đột ngột sau một vài lần xây dựng.


Tôi đã thử mọi thứ khác với dự án con của mình và đây là điều duy nhất sẽ hoạt động. Cảm ơn bạn.
dirkoneill

Bạn vẫn nên sử dụng dấu ngoặc kép cho các thư viện tĩnh. Dấu ngoặc nhọn tìm kiếm đường dẫn tiêu đề hệ thống và sẽ không tìm kiếm đường dẫn tiêu đề người dùng trừ khi bạn cũng bật tùy chọn Luôn tìm kiếm đường dẫn người dùng , tùy chọn này bạn không nên làm nếu không cần thiết.
defos1

2

Sự cố tự giải quyết khi tôi đặt

Xây dựng Cài đặt-> Dự án-> Đường dẫn Tìm kiếm thành Có


2

Tôi đã có cùng một mục tiêu - 2 mục tiêu trong dự án của tôi ( ProjectProjectTest of GHUnit). Khi lược đồ của tôi được thiết lập thành Project , quá trình nhập <GHUnitIOS/GHUnit.h>gặp sự cố “không tìm thấy tệp vấn đề từ vựng hoặc bộ xử lý tiền xử lý” . Nhưng khi tôi đặt làm ProjectTest lược đồ , mọi thứ đều ổn. Vì vậy, tôi cũng đã thêm GHUnitIOS.frameworkvào Project .


Tôi đã có một vấn đề ngược lại. Xem câu trả lời của tôi: stackoverflow.com/a/16783389/629014
slcott

1

Có vẻ như các đường dẫn tìm kiếm tiêu đề của bạn không chính xác không được định cấu hình đúng cách trong cài đặt xây dựng của bạn cho lược đồ đang hoạt động. Xác minh chúng và cập nhật câu hỏi của bạn với cài đặt hiện tại.


1

Tôi đang gặp sự cố tương tự trên trình mô phỏng nhưng không phải thiết bị và các trường đường dẫn tìm kiếm tiêu đề của tôi trống (Có vẻ là mặc định). Nhưng việc thay đổi Không gian làm việc dường như đã giải quyết được vấn đề. Có thể bạn có thể thử tạo một Không gian làm việc mới, thêm dự án của bạn vào đó và xem điều đó có hữu ích không. Bây giờ tôi đang điều tra tại sao.


1

Tôi đã gặp lỗi "không tìm thấy tệp" này cho một tệp .h cụ thể trong dự án của tôi. Tôi đã giải quyết vấn đề bằng cách xóa tệp .h đó khỏi dự án (chọn "Xóa tham chiếu") và thêm lại.


1

Thêm biến thể khác: Tôi có hai trường hợp foo.mtrong Compile Sourcegiai đoạn xây dựng, một số trường hợp đã gây ra "Không tìm thấy tiêu đề" foo.h.


1

Một cơ hội khác:

Trong dự án không gian làm việc: xem trong Mục tiêu cho phần Xây dựng giai đoạn. Như nhiều sách hướng dẫn cho biết bạn cần phải có Giai đoạn xây dựng tệp sao chép để sao chép tất cả các tiêu đề của bạn sang một nơi khác, vì iOS Framework không thể chứa tệp tiêu đề được chia sẻ (đây là trường hợp của tôi).

Chọn cho các Tệp Sao chép đó làm tùy chọn Đích "Danh mục Sản phẩm". Hoặc một thư mục tương tự khác của bạn nơi các tiêu đề sẽ cư trú.

Điều đó đã làm việc cho tôi. Có thể thư mục bản dựng cho Lưu trữ (hoặc Bản phát hành) rất khác so với bản dựng cho Gỡ lỗi.

Đồng thời kiểm tra cài đặt không gian làm việc của bạn trong thư mục xây dựng của bạn.

XD


0

Đối với tôi, sự cố này xảy ra sau khi tôi thêm tệp mới vào dự án; .m và .h trống có nguồn gốc từ NSObject. Đây là cách tôi giải quyết nó:

  1. Đã đóng và khởi động lại xCode
  2. Đã xóa hai tệp mới qua XCode
  3. Đã biên dịch lại thành công

Sau đó tôi đã thêm lại chúng sau đó và nó cũng hoạt động.

Chắc chắn là một lỗi trong xCode ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.