Menu

Tree [b11d76] default tip /
 History

Read Only access


File Date Author Commit
 API 2019-05-03 Suryavarman Suryavarman [b73886] Amélioration de la documentation.
 API_Py 2019-08-05 Suryavarman Suryavarman [2bbabe] Mise à jour du readme
 GUI 2019-05-03 Suryavarman Suryavarman [b73886] Amélioration de la documentation.
 .hgignore 2019-05-03 Suryavarman Suryavarman [6db7fc] Amélioration de la documentation du code.
 LICENSE 2019-04-27 Suryavarman Suryavarman [81ede3] Traduction de la license en Français.
 Longue_description.md 2019-04-27 Suryavarman Suryavarman [81ede3] Traduction de la license en Français.
 README.md 2019-08-05 Suryavarman Suryavarman [b11d76] Correction du lien du snapshot.
 icon.png 2019-05-03 Suryavarman Suryavarman [40cd9c] amélioration de la documentation de api.
 wxCppPy.workspace 2019-04-14 Suryavarman Suryavarman [f7d3ce] Essais d'implémentation de l'export des accès à...

Read Me

wxCppPy

wxCppPy démonstration

Présentation:

wxCppPy est un projet écrit en c++ et python.

Il sert de démonstration pour le tutoriel suivant: (en cours d'écritutre)

http://www.suryavarman.fr/python_cpp_pybind_wx/

L'objectif est de démontrer la faisabilitée et la manière de créer une application c++/wxWidgets qui peut être manipuler via python/wxPython.

Installation des dépendances

Pour les besoins de l'explication le dossier de travail sera

/home/utilisateur/travaux/

Vous aurez besoin de :

  • CMake

  • Mercurial

  • Git

  • python-virtualenv

Commençons par les dépendences:

CppClay

hg clone http://hg.code.sf.net/p/cppclay/code CppClay
cd CppClay
cmake .
cmake --build

python3

Pour cette aide j'utilise la version 3.5m de python. Le mention «m» se nomme l'abiflags. C'est important à le noter car certains répertoires portent cette mention

[…]/include/python3.5m

et d'autres non.

[…]/lib64/python3.5/site-packages

Réalisant cette aide sur Mageia6 l'exécutable de python ce situe dans le répertoire /usr/bin et la librairie dans le répertoire /usr/lib64.

Passons à la création de l'environnement python qui servira au dévellopement de wxCppPy.

Sur Mageia6 l'installation de l'outils python-virtualenv se fait ainsi:

urpmi python-virtualenv

La création de l'environnement se fait donc ainsi

cd /home/utilisateur/travaux/

virtualenv --python=/usr/bin/python3 --system-site-packages venv

L'utilisation virtualenv permet de s'assurer que les includes et les librairies seront présentent dans l'environnement virtuel.

pybind11

git clone https://github.com/pybind/pybind11.git pybind11
cd pybind11
mkdir build && cd build
cmake .. -DPYTHON_EXECUTABLE=/usr/bin/python3.5m -DDOWNLOAD_CATCH=1
make check -j

wxPython

Si vous n'êtes pas sur Windows vous n'êtes pas obligé de compiler wxPython. Les en-têtes et les .so sont suffisants.

Snapshots-builds:

Pour se faire télécharger ce snapshot ou si vou pouvez sélectionner le dernier tar.gz ici (snapshot-builds).

Pour cette aide l'archive sélectionnée est wxPython-4.0.5a1.dev4116

Décompressez l'archive. Pour cette aide wxPython sera décompressé dans le répertoire suivant:

/home/utilisateur/travaux/wxPython/wxPython-4.0.5a1.dev4116

Téléchargement à partir du dépôt git:

Si vous compter compiler wxPython à partir du dépot, n'oubliez pas de charger les sous modules. Cela permet de récupérer la version de wxWidgets utilisée.

#!/usr/bin/env bash

WXPYTHON_TAG=wxPython-4.0.6

rm -f -d -r ./${WXPYTHON_TAG}
git clone https://github.com/wxWidgets/Phoenix.git ${WXPYTHON_TAG}
cd ${WXPYTHON_TAG}
git submodule update --init --recursive
git checkout tags/${WXPYTHON_TAG}

Compilation:

Vous trouverez ici la liste des dépendances.

Sur Mageia6 j'ai dû créer un lien symbolique pour que le compilateur trouve libSDL2.so.

ln -s /lib64/libSDL2-2.0.so.0 /lib64/libSDL2.so
cd /home/utilisateur/travaux/wxPython/wxPython-4.0.5a1.dev4116
/home/utilisateur/travaux/venv/bin/python3 build.py dox doxhtml etg --nodoc sip build --force_config --release --jobs=16

Installation dans l'environnement virtuel python:

cd /home/utilisateur/travaux/venv
./bin/pip3 install ../../wxPython/wxPython-4.0.5a1.dev4116/

Remarques:

  1. Dans un même environnement virtuel python vous pouvez avoir plusieurs version de python. Cela dépend de ce que vous avez fait. Si c'est le cas veillez à mettre le bon numéro de version de pip. Dans mon cas c'est pip3.5.

  2. Si vous avez le message suivant lors de la compilation: sh: dot : commande introuvable Ce n'est pas nécessaire car c'est pour la génération de la documentation. Pour corriger cela vous pouvez installer graphviz.

Sur Mageia6 la commande est la suivante: urpmi graphviz

wxWidgets

Que vous ayez obté pour les «snapshots-builds» ou le dépôt git avec les submodules, wxWidgets se situra dans Phoenix/ext/wxWidgets.

Compilation de wxCppPy

Installer le wxCppPy:

hg clone http://hg.code.sf.net/p/wxcpppy/code wxCppPy

Ouvrir la solution:
/home/utilisateur/travaux/wxCppPy/wxCppPy.workspace

Configurer les variables d'environements dans CodeBlocks:

Settings > Environment… > Environment variables

capture

PYTHONENV_PATH = /home/utilisateur/travaux/venv
PYBIND11_PATH = /home/utilisateur/travaux/pybind11
WXPYTHON_PATH = /home/utilisateur/travaux/wxPython/wxPython-4.0.5a1.dev4116
CPPCLAY_PATH = /home/utilisateur/travaux/CppClay
CPPCLAYDLL_PATH = /home/utilisateur/travaux/CppClay/MakeFile/src/clay
PYTHONENV_SP_PATH=home/utilisateur/travaux/venv/lib64/python3.5/site-packages
PYTHONENV_INCLUDE_PATH=/home/utilisateur/travaux/venv/include/python3.5m

Voilà vous n'avez plus cas compiler et exécutez le projet GUI comme sur la vidéo.

Remarques:

API_Py compile une première fois le projet avec Codeblocks et une deuxième fois avec python pour l'installer dans l'environnement virtuel python. Précisement dans le dossier /home/utilisateur/travaux/venv/lib64/python3.5/site-packages/

il installe la librairie wxcpppy.cpython-35m-x86_64-linux-gnu.so

et le dossier wxcpppy-0.0.2-py3.5.egg-info.

Licence

wxCppPy est fourni sous la licence MIT.

Veuillez vous reporter au len suivant: wxCppPy::License

Note

Ce «lisez-moi» a été rédigé à l'aide de Mark Text.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.