[PYTHON] À propos du contenu de wscript lors de la création d'un environnement en langage D comme celui avec Waf

waf est un outil de construction écrit en pytho. J'ai essayé de l'introduire en créant un environnement de compilation en langage D automatiquement dans une certaine mesure. Comme il est écrit en python, vous avez besoin d'un environnement dans lequel python peut s'exécuter.

L'environnement avec le code waf et .d est le suivant.

フォルダ環境

Ignorez ~~ .sublime-project et ~~ .sublime-wokspace car ce sont des fichiers liés au projet utilisés dans Sublime Text 2.

waf est le corps principal de l'outil de compilation. wscript décrit les règles de construction. Les relations d'importation des fichiers .d (hors Phobos) sont les suivantes

Cependant, /src/unipa/courseinfo.d importe std.net.curl, vous devez donc vous référer à la bibliothèque curl.

Voyons maintenant le contenu de wscript.

wscript


import os.path

APPNAME='UNIPA_UFCS'
VERSION='1.0'

top='.'
out='./build'

def options(opt):
	opt.load('compiler_d')

def configure(conf):
	conf.load('compiler_d')

def build(bld):
	bld.add_post_fun(target_run)

	bld.program(
		source='./src/main.d ./src/unipa/webdata.d ./src/unipa/courceinfo.d',
		target=APPNAME,
		includes = './src/',
		libpath = '/dmd2/osx/lib',
		lib = 'curl'
		)

def target_run(ctx):
	ctx.exec_command(os.path.join(out, APPNAME) + '> result.txt')

APPNAME est le nom du fichier exécutable, VIRSION est le même, top est le dossier avec wscript et out est la destination de sortie du fichier .o ou exécutable. Si vous écrivez des options et configurez comme ci-dessus, il construira les paramètres adaptés à l'environnement de développement du langage D. facile. build est le corps de la règle de construction, écrivez la règle de construction dans bld.program. Il est écrit de différentes manières. Eh bien, je pense que vous pouvez comprendre le sens. Par exemple, reportez-vous à la bibliothèque curl avec libpath et lib. Si vous mettez une fonction dans l'argument de bld.add_post_fun, elle exécutera la fonction que vous avez passée lorsque la construction a réussi. target_run exécute le fichier exécutable lorsque la compilation est réussie et renvoie la sortie dans result.txt.

Eh bien, ça ressemble à ça.

Après cela, si vous définissez la construction du côté Sublime Text 2, ce sera un environnement plus heureux. Ça revient.

Recommended Posts

À propos du contenu de wscript lors de la création d'un environnement en langage D comme celui avec Waf
À propos du fait que le résumé de la torche peut être vraiment utilisé lors de la construction d'un modèle avec Pytorch
Recommandation de construction d'un environnement Python portable avec conda
Précautions à prendre lors de la construction d'un environnement PYTHON
Script Python qui compare le contenu de deux répertoires
Lors de l'incrémentation de la valeur d'une clé qui n'existe pas
Traitez le contenu du fichier dans l'ordre avec un script shell
L'histoire de la création d'un module qui ignore le courrier avec python
[Python] Un programme qui fait pivoter le contenu de la liste vers la gauche
Créer un environnement Kubernetes avec Ansible 2
Créer un environnement virtuel avec Python 3
Créer un environnement Kubernetes avec Ansible 1
Un mémo lors de la création d'un environnement qui peut être débogué avec Lambda @ Edge pour le moment
Construction d'un environnement distribué avec la série Raspberry PI (Partie 1: Résumé de la disponibilité des clients sans disque par modèle)
Une histoire qui visualise le présent de Qiita avec Qiita API + Elasticsearch + Kibana
Commandes importantes lors de la construction de l'environnement Laravel dans l'environnement Apache (Remarque)
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
Une note sur les fonctions de la bibliothèque Linux standard qui gère le temps
[Pyenv] Construire un environnement python avec ubuntu 16.04
À propos de l'environnement virtuel de Python version 3.7
Création d'un environnement Python 3.6 avec Windows + PowerShell
[Explication AtCoder] Contrôlez les problèmes A, B, (C), D de ABC165 avec Python!
[Explication AtCoder] Contrôlez les problèmes A, B, C, D d'ABC183 avec Python!
Autour de l'authentification de PyDrive2, un package pour faire fonctionner Google Drive avec Python
L'histoire de la création d'une application Web qui enregistre des lectures approfondies avec Django
[Explication AtCoder] Contrôlez les problèmes A, B, C, D d'ABC181 avec Python!
Créer un environnement de développement de langage C avec un conteneur
Remarque: préparez l'environnement de CmdStanPy avec docker
Préparer l'environnement d'exécution de Python3 avec Docker
Construire un environnement python avec virtualenv et direnv
Résolvez A ~ D du codeur yuki 247 avec python
Écrire une note sur la version python de python virtualenv
Un mémo lors de la création d'un environnement python avec miniconda
Pensez à créer un environnement Python 3 dans un environnement Mac
À propos du contenu de développement de l'apprentissage automatique (exemple)
Vider le contenu de la base de données redis avec lua
Flux de création d'un environnement virtuel avec Anaconda
Créer une table avec le notebook IPython
C'est une histoire de ferroutage sur le service qui renvoie "Nyan" lorsque vous appuyez sur ping
J'ai créé une application Twitter qui décrypte les caractères de pré-connexion avec heroku (échec)
Procédure lors de la construction d'Ubuntu en tant qu'environnement virtuel avec Vagrant + Virtualbox pour LPIC Niveau 1.
J'ai essayé de faire quelque chose comme un chatbot avec le modèle Seq2Seq de TensorFlow
Une histoire qui a échoué lors de la tentative de suppression du suffixe d'une chaîne avec rstrip
À propos du fait que le contenu de l'impression Python n'est pas visible dans les journaux du docker
Une histoire sur l'amélioration du programme pour le remplissage partiel des données d'image binarisées 3D
Un script qui combine les marges lors du collage d'un certain nombre de graphiques sur des tuiles avec gnuplot
Lors de la lecture d'un fichier csv avec read_csv de pandas, la première colonne devient index
J'ai jeté un œil au contenu de sklearn (scikit-learn) (1) ~ Qu'en est-il de l'implémentation de CountVectorizer? ~
Une note de malentendu lors de la tentative de chargement de l'intégralité du module self-made avec Python3
J'ai réfléchi à la raison pour laquelle Python self est nécessaire avec le sentiment d'un interpréteur Python
Recueillez des tweets sur "Corona" avec python et détectez automatiquement les mots qui sont devenus un sujet brûlant en raison de l'influence de "Corona"
Un script qui envoie un ping au serveur enregistré et envoie un e-mail avec Gmail un certain nombre de fois en cas d'échec