È possibile sovrascrivere i valori predefiniti per vari Distutils di compilazione e di collegamento bandiere utilizzando le variabili d'ambiente. Ciò potrebbe richiedere alcuni esperimenti a seconda della piattaforma su cui ti trovi e di come è stato costruito il Python che stavi utilizzando. Ma generalmente l'override di CFLAGS
influenzerà la fase di compilazione e uno dei numeri LDSHARED
o LDFLAGS
influenzerà la fase di collegamento.
export CFLAGS='-std=c++11'
pip install blah
o
export CFLAGS='-std=c++11'
python setup.py install
Su OS X, un'altra opzione è quella di utilizzare la variabile ARCHFLAGS
ambiente che ha il vantaggio di non cancellare l'originale CFLAGS
o LDSHARED
valori.
fonte
2014-04-24 06:44:35
ho pensato che il punto centrale di distutils era quello di evitare "completamente dipendente dalla piattaforma". Dal momento che sto distribuendo una libreria che deve essere compilata localmente sulla macchina dell'utente finale, ho davvero bisogno di qualcosa di indipendente dalla piattaforma. – Adam
@Adam Questo è parte del punto di 'distutils', ma una volta che si arriva alla compilazione del codice in modo nativo, questo diventa complicato, quindi ti dà questi handle per fare cose specifiche della piattaforma. Puoi fare cose intelligenti nel tuo 'setup.py' per selezionare le giuste cose specifiche della piattaforma per una serie di piattaforme popolari. Ma non c'è un modo universale per specificare C++ 11, e ci sono un sacco di macchine là fuori che non hanno ancora compilatori che lo supportano. – juanchopanza
puoi indicarmi cosa implicherebbe quella "roba intelligente"? – Adam