2014-09-04 70 views
0

我有一個c/C++庫,最初的目標是win/osx/ubuntu。 lib源文件可用,我想爲ios編譯它。如何在OS X上爲ios交叉編譯原生makefile項目?

有關此方案的許多discussions都基於automake configure腳本的假設,並且不是非常有用,因爲lib是本機makefile項目。我也嘗試添加lib到Xcode 5.1作爲外部目標,然後變得對如何指定構建設置(基礎SDK,目標設備等)(我不經常使用Xcode)無能爲力。似乎Xcode中的外部目標沒有相關設置?

任何幫助,將不勝感激。

+0

如果它是開源的,在你的問題親切鏈接的位置,我可以採取偷看。我想*你想建立一個通用框架([很多文章,其中一個](https://github.com/jverkoey/iOS-Framework))。但是在這方面的困難將被看到。 – WhozCraig 2014-09-04 03:19:07

+0

嗨WhozCraig,感謝您的信息。 lib本身是專有的,但像其他任何開源庫一樣,它具有boost和一些其他圖像庫的依賴關係。我只是試圖從已有的osx_makefile中創建一個'ios_makefile',通過用來自iPhoneOS7.1.sdk的頭文件替換CFLAGS -IXXX選項,但是由於鏈接器錯誤(指向/usr/lib/libSystem.dylib鏈接)而失敗。我對osx/ios的東西比如'-framework'很陌生,但我想這個錯誤是因爲目標二進制文件必須鏈接到ios系統庫而不是osx庫,這種理解是否正確? – MikeZ4096 2014-09-04 07:35:02

+0

非常。構建iOS框架總是很痛苦,蘋果無助於簡化。我有時認爲他們希望我們所有人都在編寫應用程序,而不是庫(就像那個工作是他們自己的)。我現在還沒有做到這一點(爲iOS構建了一個動態框架)。也許他們更容易。自Xcode 5.1和最新的iOS。我不得不再次嘗試它。 – WhozCraig 2014-09-04 07:37:15

回答

0

要編譯用於iOS的C/C++,除非需要使用clang/clang++作爲編譯器並指定sysroot,arch和iOS版本,否則您需要像平常一樣編譯它。

您可以通過運行拿到iPhone SYSROOT:

xcrun --sdk iphoneos --show-sdk-path 

因此,像這樣:

clang++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.2.sdk -arch arm64 -arch armv7 -arch armv7s -miphoneos-version-min=7.0 file.cpp