2010-03-10 20 views
6

Ho un'applicazione che si collega a Python.framework di OS X. Dal momento che Snow Leopard è passato a Python 2.6, il framework ora contiene versioni per 2.4, 2.5 e 2.6. Tuttavia, il mio programma non sembra voler creare un collegamento con 2.6, e questo finisce per causare errori quando provo a utilizzare le funzionalità dal più recente runtime di Python.Come collegarsi a una specifica versione di framework in Xcode?

So che posso semplicemente usare install_name_tool per modificare il collegamento in un passaggio post-build, ma esiste un modo per indicare semplicemente dove collegare durante la compilazione? Sembra un caso d'uso piuttosto comune.

risposta

2

Non ho provato questo, ma credo che funzionerà.

1) Non aggiungere il quadro al progetto Xcode

2) Al contrario, utilizzare il percorso completo alla libreria in "OTHER_LINKER_FLAGS" - così "/System/Library/Frameworks/Python.framework/2.5/ Python "

3) Sarà inoltre necessario impostare il percorso di ricerca del framework su" /System/Library/Framework/Python.framework/2.5/ "e impostare il percorso di ricerca di inclusione su"/Sistema/Libreria/Framework/Python.framework/2.5/intestazioni"

Tuttavia, con tutto quello che ha detto, vi lascerà vulnerabili a eventuali modifiche Apple potrebbe fare. Ad esempio, tutto si interromperà se in seguito rimuovono 2.5 dal framework. Sarebbe un'idea molto migliore aggiornare la tua app per funzionare con la versione attuale di Python.

+0

Destra, desidero * collegarsi alla versione più recente di Python. Il problema è che il mio programma sembra voler solo collegarsi alla versione 2.5, anche con i percorsi include e lib. Posso aggiustarlo dopo il fatto, ma mi sembra di essere un kludge. – SJML

+0

Questo suggerimento ha funzionato per il collegamento a un framework precedente (ad esempio, se si collega a Python.framework su 10.7, l'app non verrà caricata su 10.6 (anche se questo è altrimenti un metodo valido per la creazione di un binario che sa come rilevare e utilizzare le funzioni da 10.7 e 10.6 tramite collegamento debole). Tuttavia, in Xcode 4, ho specificato manualmente la libreria nella fase di collegamento e ha funzionato correttamente (al contrario di farlo con OTHER_LINKER_FLAGS) – gaige

1

ho avuto questo problema specifico, troppo, e non potrebbe trovare un modo per ottenere Python Framework 2.6 nella build.

non ho potuto ottenere l'approccio OTHER_LINKER_FLAGS al lavoro, ahimè.

Così, come SJML suggerito, ho usato un passaggio di generazione post come così:

# 
# 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 

Basta mettere fuori là per il grep. :)

Problemi correlati