2012-04-12 22 views
13

Tôi đang cố gắng 'nhập' codebase C++ hiện có vào dự án XCode iOS của mình.Bắt XCode để bao gồm, biên dịch và liên kết codebase hiện tại (C++) trong XCode 4.3 (.1)

Vấn đề là, xCode sẽ không biên dịch (và do đó không liên kết) mã của tôi. Đây là những gì tôi đã thực hiện cho đến thời điểm này:

  • Tệp> Thêm tệp vào "Dự án". Tôi không đánh dấu 'Sao chép tệp' vì đó là một codebase được chia sẻ cho nhiều nền tảng và nhiều bản sao của mã nguồn không phải là một tùy chọn.
  • Tôi đã thêm đường dẫn thích hợp vào cài đặt dự án "Đường dẫn tìm kiếm tiêu đề". Bao gồm các tệp tiêu đề hoạt động, tôi có thể #include "stuff.h" từ tệp Mục tiêu-C++ (.mm) của tôi.

Tuy nhiên, tôi không thể tìm thấy bất kỳ cách nào thực sự nói cho XCode biên dịch tệp .cpp?

Một vài điểm:

  • Tôi không tìm kiếm một cách để trước biên dịch nó thành một thư viện và liên kết như vậy
  • Dự án này là một dự án Objective-C chuẩn iOS. Các mã C++ được gọi từ nó (mà không phải là một vấn đề)

Cập nhật

Tôi đã thêm codebase thư mục để "Compile Nguồn" của mục tiêu. Tôi thực sự phải bấm vào "Thêm khác ..." trong hộp thoại bật lên, vì tôi không thể chọn tham chiếu thư mục để codebase của tôi.

Khi tôi thêm nó, XCode hỏi tôi liệu tôi có muốn "Tạo dự án hệ thống xây dựng bên ngoài" không. Tôi để nó đánh dấu và hai trường có giá trị mặc định "/ usr/bin/make" và "$ (ACTION)". Tuy nhiên, codebase của tôi không được biên dịch trong quá trình xây dựng. Tôi có phải viết Makefile của riêng mình không?

Nếu tôi không chọn "Tạo dự án xây dựng hệ thống bên ngoài", sau đó một tài liệu tham khảo thư mục được tạo ra theo mục tiêu, nhưng không được biên dịch trong xây dựng và một cảnh báo được phát ra:

warning: no rule to process file '$(PROJECT_DIR)/../codebase' 
of type folder for architecture i386 

Trả lời

18

Thậm chí nếu bạn don 't kiểm tra Sao chép tệp bạn phải kiểm tra Thêm vào mục tiêu khi thêm tệp vào dự án.

enter image description here

Nếu bạn quên để làm điều đó, bạn có thể chọn mục tiêu, đi đến Xây dựng giai đoạn tab và thêm các tập tin vào Compile Nguồn.

enter image description here

+0

Mục tiêu (chỉ có một) được chọn trong Thêm vào mục tiêu. – olafure

+0

Bạn có tệp cpp của mình được liệt kê trong ** Nguồn biên dịch ** không? Nếu bạn không cố gắng thêm chúng? – sch

+4

Chúng tôi đang ở đó :) Nếu tôi thêm một tệp .cpp đơn, nó sẽ được đưa vào bản dựng! Tuy nhiên, nếu tôi chọn toàn bộ thư mục (xem câu hỏi được cập nhật của tôi), không có gì được xây dựng. Tôi không muốn chọn tất cả các tệp .cpp gazillion của mình theo cách thủ công (bao gồm đường dẫn sẽ sai và thêm địa ngục để thêm/xóa tệp theo cách thủ công trong tương lai) – olafure

8

Nếu bạn đi đến mục tiêu của bạn -> Xây dựng giai đoạn -> Compile Nguồn -> "+" -> "Thêm loại khác" -> (chọn thư mục nguồn bên ngoài của bạn) -> Chọn: Tạo Group cho bất kỳ thư mục được thêm nào -> Bỏ chọn: Sao chép các mục vào đích.

Bây giờ thư mục của bạn sẽ ở dạng XCode, bắt chước cấu trúc. Nếu bạn thêm các tệp nguồn vào thư mục đó trong XCode, các tệp nguồn sẽ được thêm vào thư mục nguồn bên ngoài của bạn tốt.Vì vậy, dễ sử dụng nhiều IDE và phải quản lý liên kết nguồn được giải quyết.

Sản phẩm khai thác. Bạn vẫn phải tự thêm các tệp vào vùng "Biên dịch nguồn". Điều này khá đơn giản. Chỉ cần nhấp và kéo tệp nguồn của bạn từ thư mục nhóm trong XCode ngay vào cửa sổ Biên dịch nguồn. Vì vậy, có một bước bổ sung khi bạn thêm tệp nguồn ngay bây giờ. Việc quên thêm chúng vào cửa sổ Compile Sources sẽ tạo ra các ký hiệu chưa được giải quyết.

+5

Cách thức này được coi là một lựa chọn khả thi bởi các nhà phát triển iOS thổi tâm trí của tôi. Điều này là tốt nếu bạn có một vài tập tin nhưng là vô lý khi bạn có hàng trăm. Tôi không thể tin rằng vấn đề này đã không được giải quyết như của XCode 8. – enl8enmentnow

+0

Chỉ cần nhìn thấy "kéo và thả" thổi tâm trí của tôi. Tệp .pbxproj này thổi tâm trí của tôi, định dạng của nó quá ngu ngốc. Làm việc với nhiều nhà phát triển trên nhiều mục tiêu khiến toàn bộ quá trình này bị hỏng với tất cả các tham chiếu đó. Nếu bạn thêm mục tiêu vào dự án của mình trước khi hợp nhất yêu cầu kéo, mục tiêu mới của bạn sẽ không được liên kết với "tệp nguồn" mới mà bạn hợp nhất ... hãy tìm những mục bị thiếu ngay bây giờ. IDE tồi tệ nhất từ ​​trước tới nay và tôi đã sử dụng nhiều. – koxon

Các vấn đề liên quan