Comment développeriez-vous une bibliothèque en langage D?
Je veux écrire une bibliothèque simple pour le traitement des images que je veux ensuite utiliser dans une application.
Je cherche une analogie avec les fichiers JAR de Java avec le système Maven (construction, installation, utilisation dans d’autres projets) ou tout autre outil de gestion de paquetages.
Ce que je voudrais savoir, c’est
Je demande cela parce que je n’ai pas l’intuition que je fais en Java ou en C ++.
Alors, quelle est l’histoire avec D?
J’utilise Visual-D pour développer le code, mais DUB est également installé.
La méthode généralement acceptée consiste à utiliser dub, un gestionnaire de paquets pour D.
Il existe déjà une bonne collection de paquets de dub: http://code.dlang.org/
Une autre manière serait de simplement publier votre paquet en tant que repository git, puis de l’utiliser comme un sous-module git. C’est l’approche que j’ai utilisée pour mes bibliothèques.
Vous pouvez le faire avec dub en définissant le type de cible mais je vous montrerai une autre manière.
En utilisant MakefileForD ,
Pourquoi ?
Parce que dub installe lib et bin dans ~/.dub
. Et n’est pas possible d’installer dans un répertoire partagé. Comme par exemple, Linux Filesystem Hierarchy Standard indique que les fichiers binarys doivent aller dans /usr/bin
.
Vous ne pouvez pas respecter cette norme en utilisant dub.
Lib partagée avec Makefile,
Créer un projet
myproject └── src └── myproject
Installez Makefile_lib dans le répertoire racine et renommez-le en Makefile.
Installer command.make dans le répertoire racine
Tu l’as maintenant
myproject ├── command.make ├── Makefile └── src └── myproject └── main.d
Définir le répertoire source
À la 5ème ligne du fichier Makefile
export REPO_SRC_DIR = src
Construire
il ne vous rest plus qu’à:
make DC=dmd shared-lib
DC accepte le compilateur dmd ldc et gdc
Installer
make install
définition du répertoire d’installation personnalisé
make install PREFIX=/usr LIB_DIR=/usr/lib64
Pour les fichiers binarys identiques au lieu de prendre Makefile_lib, vous devez utiliser Makefile_exe