Je suis en train d'utiliser SWIG pour envelopper un code C++ pour l'utilisation avec Python. Comme décrit here il semble nécessaire de lier mon code C++ contre un fichier .so
, pas un fichier .dylib
. Le fil suggère d'utiliser libtool
en combinaison avec le drapeau -module
pour créer un lien, mais je me sers qmake et ont besoin d'instructions plus précises sur la façon dont je le fais.Comment lier .so au lieu de .dylib sur OSX 10.6 en utilisant qmake
Mon fichier .pro (pour qmake) ressemble à ceci:
TEMPLATE = lib
TARGET =
CONFIG += qt debug console plugin no_plugin_name_prefix
QT += opengl
DEPENDPATH += . libgm src
INCLUDEPATH += . libgm src /usr/include/python2.6/
LIBS += -L/usr/lib -lpython
MOC_DIR = .moc
OBJECTS_DIR = .tmp
DESTDIR = bin
TARGET = _mylibname
DEFINES += COMPILE_DL=1
HEADERS += <my_headers> \
src/swig_wrap.h
SOURCES += <my_sources>
src/swig_wrap.cxx
j'invoque d'abord swig
, puis qmake
, puis make
en utilisant Eclipse constructeurs:
cd src/
swig -c++ -python swig.i
cd ..
qmake -spec macx-g++
make all
Compilez et liez fonctionne très bien , mais me laisse avec bin/_mylibname.dylib
, et quand je cours mon application python, l'instruction d'importation _mylibname
échoue.
Est-ce que quelqu'un sait comment je peux obtenir qmake pour construire un *.so
au lieu d'un *.dylib
, éventuellement à l'aide libtool
(ou de toute autre manière pour tout ce que je fous)? Ma plate-forme:
- Mac OS X Snow Leopard (10.6)
- Python 2.6
- SWIG 1.3.31
- qmake 2.01a avec Qt 4.6.2
- g ++ i686-pomme-darwin10- g ++ - 4.2.1
Je ne suis pas très informé des questions liant, donc s'il vous plaît soyez doux :-)
Ole