Dự án Xcode của tôi được tạo thành các biến thể của cùng một sản phẩm bằng cách sử dụng hai mục tiêu. Sự khác biệt giữa hai chỉ là phiên bản của một thư viện được bao gồm được sử dụng. Đối với các tệp nguồn .c, thật dễ dàng để gán đúng phiên bản cho đúng mục tiêu bằng cách sử dụng hộp kiểm đích. Tuy nhiên, bao gồm cả các tập tin tiêu đề luôn luôn bao gồm cùng một. Điều này là đúng cho một mục tiêu, nhưng sai cho một mục tiêu khác.kiểm soát tệp tiêu đề dự án nào Xcode sẽ bao gồm
Có cách nào để kiểm soát tệp tiêu đề nào được bao gồm bởi mỗi mục tiêu không?
Đây là hệ thống cấp bậc của tôi tập tin dự án (được nhân rộng trong Xcode):
MyProject
TheirOldLib
theirLib.h
theirLib.cpp
TheirNewLib
theirLib.h
theirLib.cpp
myCode.cpp
và myCode.cpp làm những điều như:
#include "theirLib.h"
…
somecode()
{
#if OLDVERSION
theirOldLibCall(…);
#else
theirNewLibCall(…);
#endif
}
Và tất nhiên, tôi xác định OLDVERSION
cho một mục tiêu và không cho người khác.
Lưu ý rằng #include
phải như được hiển thị. Cả hai lỗi thất bại với một tập tin không tìm thấy sau:
#include "TheirOldLib/theirLib.h"
#include "TheirNewLib/theirLib.h"
Vậy là có một cách để nói với Xcode mà theirLib.h
bao gồm mỗi mục tiêu?
Ràng buộc:
- hai tệp tiêu đề có cùng tên. Như một phương sách cuối cùng, tôi có thể đổi tên một trong số họ, nhưng tôi muốn tránh điều đó vì điều này sẽ dẫn đến việc kéo tóc lớn trên các nền tảng khác.
- phải thay đổi #include
để thêm tham chiếu vào thư mục kèm theo cũng là điều tôi muốn tránh, vì tôi cần thực hiện hai lần với chỉ thị biên dịch có điều kiện.
- Tôi hoàn toàn miễn phí để tinh chỉnh dự án của mình khi tôi thấy phù hợp
Cảm ơn bạn đã được trợ giúp.
Điều này hoạt động hoàn hảo. Cảm ơn bạn. Người đăng nên đánh dấu phần này là Trả lời. – SmallChess
Không nên trong bước 2. là "Đường dẫn tìm kiếm tiêu đề người dùng" thay vì "Đường dẫn tìm kiếm tiêu đề"? khi bạn sử dụng #include "" và không phải #include <> – Olof
Tôi đoán bạn là chính xác. 'Đường dẫn tìm kiếm tiêu đề' hoạt động, nhưng' Đường dẫn tìm kiếm tiêu đề người dùng' sẽ tốt hơn. –