Ortam değişkenlerini kullanarak çeşitli Distutils derleme ve bağlantı bayraklarının varsayılan değerlerini geçersiz kılabilirsiniz. Bu, hangi platformda olduğunuza ve kullandığınız Python'un nasıl yapıldığına bağlı olarak bazı denemeler gerektirebilir. Ancak genellikle CFLAGS
'u geçersiz kılmak, derleme aşamasını etkileyecek ve LDSHARED
veya LDFLAGS
'dan biri bağlantı aşamasını etkileyecektir.
export CFLAGS='-std=c++11'
pip install blah
veya OS X
export CFLAGS='-std=c++11'
python setup.py install
, başka bir seçenek, orijinal
CFLAGS
veya
LDSHARED
değerlerini silerek avantajına sahiptir
ARCHFLAGS
ortam değişkeni kullanmaktır. Bu tamamen platform bağımlı olduğunu
ext = Extension('foo', sources=[....],
libraries=[....],
extra_compile_args=['-std=c++11'],
....)
Not:
Bütün dağıtım noktalarının "tamamen platforma bağımlı" olmaktan kaçınmak olduğunu sanmıştım. Son kullanıcının makinesinde yerel olarak derlenmesi gereken bir kütüphane dağıttığım için, gerçekten platformdan bağımsız bir şeye ihtiyacım var. – Adam
@Adam Bu, 'dağınıklıkların' noktasının bir parçasıdır, ancak kodları doğal olarak derlediğimizde bu karmaşıklaşır, bu yüzden size bu tutamaçları platforma özgü şeyler yapmak için verir. Bir dizi popüler platform için doğru platformlara özel şeyler seçmek için 'setup.py' öğesinde akıllıca şeyler yapabilirsiniz. Ancak, C++ 11'i belirtmenin evrensel bir yolu yok, ve henüz desteklemeyen derleyicileri olmayan birçok makine var. – juanchopanza
Bu "zeki şeylerin" neye yol açacağına işaret edebilir misin? – Adam