2010-03-10 55 views
6

我有一個應用程序鏈接到OS X的Python.framework。由於Snow Leopard升級到Python 2.6,該框架現在包含2.4,2.5和2.6版本。但是,我的程序似乎並不想鏈接到2.6,而當我嘗試使用較新的Python運行時的功能時,最終導致錯誤。如何鏈接到Xcode中的特定框架版本?

我知道我可以使用install_name_tool在後期構建步驟中更改鏈接,但有什麼方法可以簡單地告訴它在構建過程中何處鏈接?看起來像一個很常見的用例。

回答

2

我還沒有試過這個,但我相信它會工作。

1)框架不要添加到您的Xcode項目

2)相反,使用完整路徑到庫中「OTHER_LINKER_FLAGS」 - 如此「/System/Library/Frameworks/Python.framework/2.5/ Python「

3)您還需要將框架搜索路徑設置爲」/System/Library/Frameworks/Python.framework/2.5/「,並將包含搜索路徑設置爲」/ System/Library/Frameworks/Python.framework/2.5/Headers「

但是,儘管如此,它將使您容易受到Apple可能做出的任何更改的影響。例如,如果他們以後從框架中刪除2.5,所有內容都會中斷。只需更新您的應用以使用當前版本的Python即可。

+0

對,我*希望*鏈接到較新版本的Python。問題是我的程序似乎只想連接到2.5版本,即使包含include和lib路徑集。我可以在事後修復它,但那感覺就像一團糟。 – SJML 2010-03-12 00:45:20

+0

此建議適用於鏈接到較舊的框架(例如,如果您鏈​​接到10.7上的Python.framework,該應用程序將不會在10.6上加載(即使這是另一種構建知道如何檢測二進制文件的有效方法並通過弱鏈接使用10.7和10.6中的函數)但是,在Xcode 4中,我在鏈接階段手動指定了庫,並且它工作正常(而不是使用OTHER_LINKER_FLAGS進行操作) – gaige 2012-01-05 18:07:33

1

我也有這個具體問題,並且找不到在構建中獲取Python Framework 2.6的方法。

我無法使OTHER_LINKER_FLAGS方法奏效,唉。

所以,像SJML建議,我用了一個後生成步驟如下所示:

# 
# Force the required version of Python to be 2.6 
# dvb10.12.01 

install_name_tool \ 
    -change \ 
     /System/Library/Frameworks/Python.framework/Versions/2.5/Python \ 
     /System/Library/Frameworks/Python.framework/Versions/2.6/Python \ 
    $TARGET_BUILD_DIR/omino_python.plugin/Contents/MacOS/omino_python 

只是把它那裏的grepping。 :)