[PYTHON] Über den Inhalt von wscript beim Erstellen einer solchen D-Sprachumgebung mit Waf

waf ist ein in Python geschriebenes Build-Tool. Ich habe versucht, es einzuführen, indem ich bis zu einem gewissen Grad automatisch eine D-Sprach-Kompilierungsumgebung erstellt habe. Da es in Python geschrieben ist, benötigen Sie eine Umgebung, in der Python ausgeführt werden kann.

Die Umgebung mit Waf- und D-Code ist wie folgt.

フォルダ環境

Ignorieren Sie ~~ .sublime-project und ~~ .sublime-wokspace, da es sich um projektbezogene Dateien handelt, die in Sublime Text 2 verwendet werden.

waf ist der Hauptteil des Kompilierungswerkzeugs. wscript beschreibt die Build-Regeln. Die Importbeziehungen von .d-Dateien (ohne Phobos) sind wie folgt

/Src/unipa/courseinfo.d importiert jedoch std.net.curl, sodass Sie auf die Curl-Bibliothek verweisen müssen.

Schauen wir uns nun den Inhalt von wscript an.

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 ist der Name der ausführbaren Datei, VIRSION ist derselbe, oben ist der Ordner mit wscript und out ist das Ausgabeziel von .o oder der ausführbaren Datei. Wenn Sie Optionen schreiben und wie oben konfigurieren, werden die Einstellungen erstellt, die für die Entwicklungsumgebung der D-Sprache geeignet sind. einfach. build ist der Build-Regelkörper. Schreiben Sie die Build-Regel in bld.program. Es ist auf verschiedene Arten geschrieben. Nun, ich denke du kannst die Bedeutung verstehen. Verweisen Sie beispielsweise auf die Curl-Bibliothek mit libpath und lib. Wenn Sie eine Funktion in das Argument von bld.add_post_fun einfügen, wird die Funktion ausgeführt, die Sie bei erfolgreichem Build übergeben haben. target_run führt die ausführbare Datei aus, wenn die Kompilierung erfolgreich ist, und gibt die Ausgabe an result.txt aus.

Nun, es sieht so aus.

Wenn Sie danach den Build auf der Seite von Sublime Text 2 festlegen, ist die Umgebung glücklicher. Es kommt wieder.

Recommended Posts

Über den Inhalt von wscript beim Erstellen einer solchen D-Sprachumgebung mit Waf
Über die Sache, dass Fackelzusammenfassung wirklich verwendet werden kann, wenn ein Modell mit Pytorch erstellt wird
Empfehlung zum Erstellen einer tragbaren Python-Umgebung mit conda
Vorsichtsmaßnahmen, die beim Aufbau einer PYTHON-Umgebung beachtet werden müssen
Python-Skript, das den Inhalt zweier Verzeichnisse vergleicht
Beim Inkrementieren des Werts eines Schlüssels, der nicht vorhanden ist
Verarbeiten Sie den Inhalt der Datei der Reihe nach mit einem Shell-Skript
Die Geschichte, ein Modul zu erstellen, das E-Mails mit Python überspringt
[Python] Ein Programm, das den Inhalt der Liste nach links dreht
Erstellen einer Kubernetes-Umgebung mit ansible 2
Erstellen einer virtuellen Umgebung mit Python 3
Erstellen einer Kubernetes-Umgebung mit ansible 1
Ein Memo beim Erstellen einer Umgebung, die vorerst mit Lambda @ Edge debuggt werden kann
Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 1: Zusammenfassung der Verfügbarkeit von plattenlosen Clients nach Modell)
Eine Geschichte, die die Gegenwart von Qiita mit Qiita API + Elasticsearch + Kibana visualisiert
Befehle, die beim Erstellen der Laravel-Umgebung in der Apache-Umgebung wichtig waren (Hinweis)
[Einführung in Python] So sortieren Sie den Inhalt einer Liste effizient mit Listensortierung
Ein Hinweis zu den Funktionen der Standard-Linux-Bibliothek, die sich mit Zeit befasst
[Pyenv] Erstellen einer Python-Umgebung mit Ubuntu 16.04
Informationen zur virtuellen Umgebung von Python Version 3.7
Erstellen einer Python 3.6-Umgebung mit Windows + PowerShell
[Erklärung zum AtCoder] Kontrollieren Sie die A-, B-, (C), D-Probleme von ABC165 mit Python!
[AtCoder-Erklärung] Kontrollieren Sie die A-, B-, C- und D-Probleme von ABC183 mit Python!
Rund um die Authentifizierung von PyDrive2, einem Paket zum Betreiben von Google Drive mit Python
Die Geschichte der Erstellung einer Webanwendung, die umfangreiche Lesungen mit Django aufzeichnet
[Erklärung zum AtCoder] Kontrollieren Sie die A-, B-, C- und D-Probleme von ABC181 mit Python!
Erstellen Sie eine Entwicklungsumgebung für die C-Sprache mit einem Container
Hinweis: Bereiten Sie die Umgebung von CmdStanPy mit Docker vor
Bereiten Sie die Ausführungsumgebung von Python3 mit Docker vor
Erstellen einer Python-Umgebung mit virtualenv und direnv
Löse A ~ D des Yuki-Codierers 247 mit Python
Schreiben Sie eine Notiz über die Python-Version von Python Virtualenv
Ein Memo beim Erstellen einer Python-Umgebung mit Miniconda
Denken Sie daran, eine Python 3-Umgebung in einer Mac-Umgebung zu erstellen
Über die Entwicklungsinhalte des maschinellen Lernens (Beispiel)
Entleere den Inhalt der Redis-Datenbank mit Lua
Ablauf beim Erstellen einer virtuellen Umgebung mit Anaconda
Erstellen Sie eine Tabelle mit IPython Notebook
Es ist eine Huckepack-Geschichte über den Dienst, der "Nyan" zurückgibt, wenn Sie Ping drücken
Ich habe eine Twitter-App erstellt, die die Zeichen der Vorverbindung mit Heroku entschlüsselt (Fehler).
Vorgehensweise beim Erstellen von Ubuntu als virtuelle Umgebung mit Vagrant + Virtualbox für LPIC Level 1.
Ich habe versucht, mit dem Seq2Seq-Modell von TensorFlow so etwas wie einen Chatbot zu erstellen
Eine Geschichte, die fehlgeschlagen ist, als versucht wurde, das Suffix mit rstrip aus einem String zu entfernen
Zu dem Problem, dass der Inhalt von Python print in Docker-Protokollen nicht sichtbar ist
Eine Geschichte über die Verbesserung des Programms zum teilweisen Füllen von binärisierten 3D-Bilddaten
Ein Skript, das Ränder kombiniert, wenn mehrere Diagramme mit Gnuplot auf Kacheln eingefügt werden
Beim Lesen einer CSV-Datei mit read_csv von Pandas wird die erste Spalte zum Index
Ich habe mir den Inhalt von sklearn (scikit-learn) angesehen. (1) ~ Was ist mit der Implementierung von CountVectorizer? ~
Ein Hinweis auf Missverständnisse beim Versuch, das gesamte selbst erstellte Modul mit Python3 zu laden
Ich dachte darüber nach, warum Python selbst mit dem Gefühl eines Python-Interpreters notwendig ist
Sammeln Sie Tweets über "Corona" mit Python und erkennen Sie automatisch Wörter, die aufgrund des Einflusses von "Corona" zu einem heißen Thema geworden sind.
Ein Skript, das den registrierten Server anpingt und eine bestimmte Anzahl von E-Mails mit Google Mail sendet, wenn dies fehlschlägt