Điều này liên quan chặt chẽ đến previous question của tôi, đó là về việc sử dụng CMake để xây dựng một thư viện tĩnh trên iPhone. Tôi đã làm việc đó để thiết lập số CMAKE_OSX_SYSROOT
.Cách thiết lập CMake để xây dựng một ứng dụng cho iPhone
Tuy nhiên, cách này không hiệu quả để xây dựng ứng dụng. CMakeLists.txt
của tôi trông giống như:
project(TEST)
set(CMAKE_OSX_SYSROOT iphoneos2.2.1)
set(CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_32_BIT)")
set(CMAKE_EXE_LINKER_FLAGS
"-framework Foundation -framework OpenGLES -framework AudioToolbox -framework CoreGraphics -framework QuartzCore -framework UIKit -framework OpenAL"
)
set(SRC --my files--)
add_executable(iphone-test MACOSX_BUNDLE ${SRC})
Một vài lưu ý:
- tôi đưa ra một cách rõ ràng
-framework
nối tùy chọn vìfind_library
không làm việc cho tất cả các khuôn khổ (nó tìm thấy hầu hết trong số họ, nhưng không phảiOpenGLES
). Tôi không hiểu tại sao, vì tất cả chúng đều nằm trong cùng một thư mục${SDK}/System/Library/Frameworks
. Điều này khiến tôi tin rằng tôi đã làm điều gì đó sai, nhưng tôi không biết điều gì. - Tôi đã thêm
MACOSX_BUNDLE
vào lệnhadd_executable
để loại sản phẩm được tạo sẽ làcom.apple.product-type.application
thay vìcom.apple.product-type.tool
, dường như không tồn tại trên iPhone.
Trong mọi trường hợp, ứng dụng biên dịch và liên kết một cách chính xác, nhưng khi tôi chạy nó trong mô phỏng, tôi nhận được sợ hãi
Failed to launch simulated application: Unknown error.
Có rất nhiều trường hợp báo cáo về vấn đề này trên google và stackoverflow , nhưng tất cả các giải pháp liên quan đến việc dọn dẹp hoặc tạo một dự án mới và di chuyển các tệp; nhưng tôi đang biên soạn một bản sao mới sau khi CMake thực hiện công việc của mình, vì vậy không có tác phẩm nào được áp dụng.
Tôi đã tìm thấy this thread trên danh sách gửi thư của CMake, nhưng nó chỉ báo cáo thành công trong việc xây dựng thư viện và sau đó gửi đi.
Tôi thấy câu trả lời của bạn rất hữu ích - tôi đã thực sự bị mất với CMake và Xcode. Tôi đã thử sử dụng phiên bản sửa đổi nhỏ của tệp CMakeLists của bạn. Tuy nhiên, tôi gặp phải một số vấn đề lạ. Có lẽ bạn có thể hãy xem câu hỏi của tôi? http://stackoverflow.com/questions/5473448/cmake-and-xcode-cannot-find-interface-declaration-for-nsobject Cảm ơn trước :) – Shade
Có một cách khác cho tài nguyên ngay bây giờ, xem tại đây: http://cmake.org/gitweb?p=cmake.git;a=blob;f=Tests/iOSNavApp/CMakeLists.txt Tuy nhiên, điều này loại bỏ hệ thống phân cấp thư mục, vì vậy tên tệp trùng lặp là một vấn đề ... –