So erstellen Sie einen Emacs-Hauptzweig (auch bekannt als Trunk) unter MS-Windows


11

Ich habe heute den Sprung gewagt und mich auf die Suche nach dem neuesten Emacs Master Branch Developer Build - auch bekannt als Emacs Trunk - für MS-Windows gemacht.

Ich fand ein altes Blog und ging die Prozedur durch, nur um eine Fehlermeldung zu erhalten, die mir mitteilte, dass eine bestimmte Methode nicht mehr unterstützt wurde. Die Fehlermeldung verwies mich auf : .../emacs/nt/INSTALL. Nun, das ist alles in Ordnung, wenn die Infrastruktur zum Erstellen von Emacs bereits installiert / konfiguriert wurde.

Es wäre sicher praktisch, wenn es einen Schritt 1, 2, 3 gäbe, in dem beschrieben wird, welche Tools benötigt werden und wie diese installiert und konfiguriert werden müssen, um Emacs unter MS-Windows zu erstellen.

Für den Fall, dass jemand eine ausführliche Beschreibung vorbereiten möchte, können Sie gerne eine Antwort posten. Wenn nicht, werde ich selbst eine aufschreiben, sobald ich herausgefunden habe, wie es geht. Ich bin auf zusätzliche Straßensperren gestoßen und habe in der Zwischenzeit einen Fehlerbericht eingereicht - ich weiß noch nicht, ob ich es bin oder vielleicht ein Fehler: https://debbugs.gnu.org/cgi/bugreport.cgi? Fehler = 21582

Ich denke, mehr Leute würden dazu neigen, ihre eigenen Emacs zu bauen, wenn es einen "Spickzettel" gäbe, der von beginnenden Programmierern oder Hobbyisten wie mir (die von Beruf keine Programmierer sind) verwendet werden könnte.


Ich denke, Sie können Emacs unter Windows auf mehrere Arten erstellen (dh höchstwahrscheinlich MingW / MS VCC, aber möglicherweise auch klirrend. Sie können hier nach der Liste der erforderlichen Bibliotheken suchen (es gibt viele davon). Emacswiki.org/emacs / BuildingEmacsWithMinGW, aber diese Informationen sind sicherlich datiert (höchstwahrscheinlich zehn Jahre oder so!)
wvxvw

Für einen 64-Bit-Build gibt es eine gute Beschreibung von emacsbinw64 unter sourceforge.net/p/emacsbinw64/wiki/… - es werden MSYS2 und MinGW-w64 verwendet. Vielleicht sollten die nt / INSTALL-Hinweise aktualisiert werden, um auch diese Option einzuschließen?
Brian Burns

@ bburns.km - danke für den Link. Ich habe mich gefragt, wie ich das 64-Bit bauen soll, hatte aber nicht die freie Zeit, um unzählige Stunden zu investieren, um es herauszufinden. In Zukunft werde ich auf jeden Fall den Link überprüfen, um festzustellen, ob es sich um einen Schritt 1, 2, 3 oder nur um eine Übersicht handelt, in der fortgeschrittene Programmierer wissen, wie man die fehlenden Lücken ausfüllt. Die Anweisungen wie nt / INSTALL sind für einen Anfänger wie mich grundsätzlich nutzlos - sie sind für einen Programmierer von Bedeutung, bedeuten mir aber praktisch nichts -, während meine 5 einfachen Schritte in der Tat eine echte 1, 2, 3 sind, die jeder hat kann folgen.
Lawlist

@lawlist Ja, es ist eine gute Zusammenfassung - ich habe vor ein oder zwei Jahren versucht, den 32-Bit-Build zu erstellen, aber etwas ist schiefgegangen und / oder ich habe mich darin verlaufen - wie Sie sagen, es ist ziemlich komplex für jemanden, der nicht daran gewöhnt ist, Dinge aus dem Quellcode zu erstellen. Die Anweisungen für emacsbinw64 sind jedoch etwas einfacher und haben recht gut funktioniert. Es dauerte nur ein paar Stunden, bis alles durchgegangen war und funktioniert. Ich denke, ich werde auf der Devlist nach dem Aktualisieren des nt / INSTALL-Dokuments fragen - es könnte 32-Bit- und 64-Bit-Abschnitte geben. Ich hatte angefangen, ein Dokument zu schreiben, aber festgestellt, dass es den emacsbinw64-Anweisungen nicht zu viel hinzufügte, aber es konnte dort verwendet werden.
Brian Burns

Antworten:


9

Es wird empfohlen, dass Benutzer den gesamten ../emacs/nt/INSTALLim Emacs-Quellcode enthaltenen Code lesen .


Schnellstart - 5 einfache Schritte :

Diese Antwort wurde unter Windows XP - SP3 getestet. Die Installationspfade müssen basierend auf den individuellen Vorlieben des Benutzers angepasst werden. In diesem Beispiel:

  • Der Desktop ist: C:\Documents and Settings\lawlist\Desktop

  • Die gitInstallation ist: C:\git

  • Die MinGWInstallation ist: C:\mingw

  • Der Git-Download-Speicherort der Emacs-Hauptniederlassung lautet: C:\Documents and Settings\lawlist\Desktop\emacs

  • Das Ziel für die Emacs-Installation ist: C:\Documents and Settings\lawlist\Desktop\trunk

Schritt Nummer 1 : Installieren Sie gitund stellen Sie sicher, dass Sie während der Installation "Checkout as is is, Commit as as is" auswählen:

https://git-scm.com/download/win

Git-2.5.3-32-bit.exe

Führen Sie das Installationsprogramm aus.

Nächster

Nächster

Standardinstallationsverzeichnis ist C:\Program Files\Git, aber ich wählte stattdessen: c:\git

Komponenten auswählen: Standard ist in Ordnung, aber ich habe stattdessen nichts ausgewählt.

Startmenüordner auswählen: Standard ist in Ordnung, aber ich habe mich dafür entschieden, stattdessen keinen Ordner zu erstellen.

Anpassen Ihrer PATH-Umgebung: Standard ist in Ordnung: Verwenden Sie Git nur von Bash.

;; Achten Sie in diesem nächsten Abschnitt genau auf die nicht standardmäßige Einstellung - siehe Emacs-Fehler Nr. 21582.

Konfigurieren der Konvertierungen für das Zeilenende: Emacs erfordert eine nicht standardmäßige Einstellung von "Checkout wie besehen, Commit wie es ist".

Konfigurieren des Terminalemulators für die Verwendung mit Git Bash: Standard ist in Ordnung: Verwenden Sie MinTTY (das Standardterminal von MSys2).

Konfigurieren von experimentellen Leistungsverbesserungen: Ich habe NICHT "Dateisystem-Caching aktivieren" ausgewählt.

Fertig stellen [ggf. Versionshinweise anzeigen]

HINWEIS: autogen.sh(und möglicherweise einige Programme von Drittanbietern) erfordern git, dass der Pfad festgelegt wird, damit die ausführbare (n) Datei (en) aufgerufen werden können, ohne den absoluten Pfad zu verwenden. Der Autor dieser Antwort hat eine persönliche Präferenz dafür, absolute Pfade zu verwenden und den PFAD nicht zu ändern. Die meisten Leute scheinen es jedoch vorzuziehen, den PFAD für aktuelle und zukünftige Sitzungen zu ändern. Unter Windows XP kann der Pfad beispielsweise über die Schaltfläche Systemsteuerung / Systemeigenschaften / Registerkarte Erweitert / Umgebungsvariablen festgelegt werden, und es scheint zwei (2) Ansichten / Meinungen darüber zu geben, ob ein Benutzer die Benutzervariablen oder das System festlegen soll Variablen - Pfade werden durch Semikolons ohne Leerzeichen getrennt. Diese Antwort legt einfach den PFAD für die Dauer der Sitzung unter Verwendung exportder unten angegebenen fest. Der Emacs autogen.shsucht dengit Befehl auf dem Pfad und beschwert sich, wenn es nicht gefunden werden kann.

Schritt Nummer 2 : InstallierenMinGW

http://www.mingw.org/wiki/Getting_Started

mingw-get-setup.exe

c:\mingw\bin\mingw-get install mingw32-base

c:\mingw\bin\mingw-get install msys-base

c:\mingw\bin\mingw-get install autoconf

c:\mingw\bin\mingw-get install automake

c:\mingw\bin\mingw-get install msys-coreutils

c:\mingw\bin\mingw-get remove mingw32-libiconv

c:\mingw\bin\mingw-get install "libiconv=1.13.1-1"

c:\mingw\msys\1.0\msys.bat

mount c:/mingw /mingw

Schritt Nummer 3 : Laden Sie die folgenden ezwinportskomprimierten Pakete herunter und extrahieren Sie sie in das Stammverzeichnis mingw.

https://sourceforge.net/projects/ezwinports/files/

;; Entpacken Sie alle folgenden ezwinports-Pakete in c:/mingwund überschreiben Sie alle Duplikate.

cairo-1.12.16-w32-bin.zip

gdk-pixbuf-2.30.2-w32-bin.zip

giflib-5.1.0-w32-bin.zip

glib-2.38.2-w32-bin.zip

gnutls-3.3.11-w32-bin.zip

jpeg-v9a-w32-bin.zip

libpng-1.6.12-w32-bin.zip

librsvg-2.40.1-2-w32-bin.zip

libtasn1-4.2-w32-bin.zip

libxml2-2.7.8-w32-bin.zip

libXpm-3.5.11-2-w32-bin.zip

nettle-2.7.1-w32-bin.zip

p11-kit-0.9-w32-bin.zip

pixman-0.32.4-w32-bin.zip

pkg-config-0.28-w32-bin.zip

tiff-4.0.3-w32-bin.zip

zlib-1.2.8-2-w32-bin.zip

Schritt Nummer 4 : Laden Sie die neuesten Emacs-Master-Zweigquelldateien mithilfe einer git-bashShell herunter .

c:\git\git-bash.exe

cd /c/docume~1/lawlist/desktop/

git clone -b master git://git.sv.gnu.org/emacs.git

exit

Schritt Nummer 5 : Erstellen Sie den Emacs-Hauptzweig und kopieren Sie die DLL-Dateien, wenn Sie fertig sind.

;; Öffnen Sie die generische Eingabeaufforderung

c:\mingw\msys\1.0\msys.bat

export PATH=$PATH:/c/git/bin

cd /c/docume~1/lawlist/desktop/emacs

./autogen.sh

./configure --prefix=/c/docume~1/lawlist/desktop/trunk

make

make install

;; copy the following files to the `/bin` directory where `emacs.exe` is located.

cp /c/mingw/bin/libXpm-noX4.dll /c/docume~1/lawlist/desktop/trunk/bin/libXpm-noX4.dll

cp /c/mingw/bin/libpng16-16.dll /c/docume~1/lawlist/desktop/trunk/bin/libpng16-16.dll

cp /c/mingw/bin/libtiff-5.dll /c/docume~1/lawlist/desktop/trunk/bin/libtiff-5.dll

cp /c/mingw/bin/libjpeg-9.dll /c/docume~1/lawlist/desktop/trunk/bin/libjpeg-9.dll

cp /c/mingw/bin/libgif-7.dll /c/docume~1/lawlist/desktop/trunk/bin/libgif-7.dll

cp /c/mingw/bin/librsvg-2-2.dll /c/docume~1/lawlist/desktop/trunk/bin/librsvg-2-2.dll

cp /c/mingw/bin/libgdk_pixbuf-2.0-0.dll /c/docume~1/lawlist/desktop/trunk/bin/libgdk_pixbuf-2.0-0.dll

cp /c/mingw/bin/libglib-2.0-0.dll /c/docume~1/lawlist/desktop/trunk/bin/libglib-2.0-0.dll

cp /c/mingw/bin/libgobject-2.0-0.dll /c/docume~1/lawlist/desktop/trunk/bin/libgobject-2.0-0.dll

cp /c/mingw/bin/libxml2-2.dll /c/docume~1/lawlist/desktop/trunk/bin/libxml2-2.dll

cp /c/mingw/bin/zlib1.dll /c/docume~1/lawlist/desktop/trunk/bin/zlib1.dll

Entpacken Sie den gesamten Inhalt von gnutls-3.3.11-w32-bin.zipbisC:\Documents and Settings\lawlist\Desktop\trunk


MANUELLE INSTALLATION - MinGW / MSYS / EZwinports

Für diejenigen abenteuerlustigen Menschen, die an einer manuellen Installation von MinGW / MSYS / EZwinports interessiert sind, sind die folgenden Dateien, die dieser Autor unter Windows XP verwendet, um einen erfolgreichen 32-Bit-Build mit den folgenden standardmäßig aktivierten Konfigurationsoptionen zu erstellen. Die Einrichtung und Konfiguration hängt von den persönlichen Vorlieben der einzelnen Benutzer ab und geht über den Rahmen dieser Antwort hinaus.

Configured for 'i686-pc-mingw32'.
Where should the build process find the source code?    .
What compiler should emacs be built with?               gcc -std=gnu99  -g3 -O 2 -gdwarf-2
Should Emacs use the GNU version of malloc?             no
  (The GNU allocators don't work with this system configuration.)
Should Emacs use a relocating allocator for buffers?    no
Should Emacs use mmap(2) for buffer allocation?         yes
What window system should Emacs use?                    w32
What toolkit should Emacs use?                          none
Where do we find X Windows header files?                NONE
Where do we find X Windows libraries?                   NONE
Does Emacs use -lXaw3d?                                 no
Does Emacs use -lXpm?                                   yes
Does Emacs use -ljpeg?                                  yes
Does Emacs use -ltiff?                                  yes
Does Emacs use a gif library?                           yes
Does Emacs use a png library?                           yes
Does Emacs use -lrsvg-2?                                yes
Does Emacs use cairo?                                   no
Does Emacs use imagemagick?                             no
Does Emacs support sound?                               yes
Does Emacs use -lgpm?                                   no
Does Emacs use -ldbus?                                  no
Does Emacs use -lgconf?                                 no
Does Emacs use GSettings?                               no
Does Emacs use a file notification library?             yes (w32)
Does Emacs use access control lists?                    yes
Does Emacs use -lselinux?                               no
Does Emacs use -lgnutls?                                yes
Does Emacs use -lxml2?                                  yes
Does Emacs use -lfreetype?                              no
Does Emacs use -lm17n-flt?                              no
Does Emacs use -lotf?                                   no
Does Emacs use -lxft?                                   no
Does Emacs directly use zlib?                           yes
Does Emacs use toolkit scroll bars?                     yes

EZWINPORTS

cairo-1.12.16-w32-bin.zip
gdk-pixbuf-2.30.2-w32-bin.zip
giflib-5.1.0-w32-bin.zip
glib-2.38.2-w32-bin.zip
gnutls-3.3.11-w32-bin.zip
jpeg-v9a-w32-bin.zip
libXpm-3.5.11-2-w32-bin.zip
libpng-1.6.12-w32-bin.zip
librsvg-2.40.1-2-w32-bin.zip
libtasn1-4.2-w32-bin.zip
libxml2-2.7.8-w32-bin.zip
nettle-2.7.1-w32-bin.zip
p11-kit-0.9-w32-bin.zip
pixman-0.32.4-w32-bin.zip
pkg-config-0.28-w32-bin.zip
tiff-4.0.3-w32-bin.zip
zlib-1.2.8-2-w32-bin.zip

MINGW

autoconf-10-1-mingw32-bin.tar.lzma
autoconf-10-1-mingw32-lic.tar.lzma
autoconf2.1-2.13-4-mingw32-bin.tar.lzma
autoconf2.5-2.68-1-mingw32-bin.tar.lzma
automake-4-1-mingw32-bin.tar.lzma
automake-4-1-mingw32-lic.tar.lzma
automake1.10-1.10.2-1-mingw32-bin.tar.lzma
automake1.11-1.11.1-1-mingw32-bin.tar.lzma
automake1.4-1.4p6-1-mingw32-bin.tar.lzma
automake1.5-1.5-1-mingw32-bin.tar.lzma
automake1.6-1.6.3-1-mingw32-bin.tar.lzma
automake1.7-1.7.9-1-mingw32-bin.tar.lzma
automake1.8-1.8.5-1-mingw32-bin.tar.lzma
automake1.9-1.9.6-3-mingw32-bin.tar.lzma
binutils-2.25.1-1-mingw32-bin.tar.xz
gcc-core-4.8.1-4-mingw32-bin.tar.lzma
gcc-core-4.8.1-4-mingw32-dev.tar.lzma
gcc-core-4.8.1-4-mingw32-dll.tar.lzma
gcc-core-4.8.1-4-mingw32-lic.tar.lzma
gdb-7.6.1-1-mingw32-bin.tar.lzma
gmp-5.1.2-1-mingw32-dll.tar.lzma
libcharset-1.13.1-1-mingw32-dll-1.tar.lzma
libiconv-1.13.1-1-mingw32-bin.tar.lzma
libiconv-1.13.1-1-mingw32-dev.tar.lzma
libiconv-1.13.1-1-mingw32-dll-2.tar.lzma
libiconv-1.13.1-1-mingw32-doc.tar.lzma
libiconv-1.13.1-1-mingw32-lic.tar.lzma
libintl-0.17-1-mingw32-dll-8.tar.lzma
libmpc-1.0.2-mingw32-dll-3.tar.xz
make-3.82.90-2-mingw32-cvs-20120902-bin.tar.lzma
mingwrt-3.21.1-mingw32-dev.tar.xz
mingwrt-3.21.1-mingw32-dll.tar.xz
mpfr-3.1.2-2-mingw32-dll.tar.lzma
pthreads-w32-2.9.1-1-mingw32-dll.tar.lzma
w32api-3.17-2-mingw32-dev.tar.lzma

MSYS

bash-3.1.23-1-msys-1.0.18-bin.tar.xz
bzip2-1.0.6-1-msys-1.0.17-bin.tar.lzma
coreutils-5.97-3-msys-1.0.13-bin.tar.lzma
coreutils-5.97-3-msys-1.0.13-doc.tar.lzma
coreutils-5.97-3-msys-1.0.13-ext.tar.lzma
coreutils-5.97-3-msys-1.0.13-lang.tar.lzma
coreutils-5.97-3-msys-1.0.13-lic.tar.lzma
diffutils-2.8.7.20071206cvs-3-msys-1.0.13-bin.tar.lzma
dos2unix-7.2.3-1-msys-1.0.18-bin.tar.lzma
file-5.04-1-msys-1.0.13-bin.tar.lzma
findutils-4.4.2-2-msys-1.0.13-bin.tar.lzma
gawk-3.1.7-2-msys-1.0.13-bin.tar.lzma
grep-2.5.4-2-msys-1.0.13-bin.tar.lzma
gzip-1.3.12-2-msys-1.0.13-bin.tar.lzma
less-436-2-msys-1.0.13-bin.tar.lzma
libbz2-1.0.6-1-msys-1.0.17-dll-1.tar.lzma
libcrypt-1.1_1-3-msys-1.0.13-dll-0.tar.lzma
libexpat-2.0.1-1-msys-1.0.13-dll-1.tar.lzma
libgdbm-1.8.3-3-msys-1.0.13-dll-3.tar.lzma
libiconv-1.14-1-msys-1.0.17-dll-2.tar.lzma
libintl-0.18.1.1-1-msys-1.0.17-dll-8.tar.lzma
liblzma-5.0.3-1-msys-1.0.17-dll-5.tar.lzma
libmagic-5.04-1-msys-1.0.13-dll-1.tar.lzma
libregex-1.20090805-2-msys-1.0.13-dll-1.tar.lzma
libtermcap-0.20050421_1-2-msys-1.0.13-dll-0.tar.lzma
libxml2-2.7.6-1-msys-1.0.13-dll-2.tar.lzma
m4-1.4.16-2-msys-1.0.17-bin.tar.lzma
make-3.81-3-msys-1.0.13-bin.tar.lzma
msysCORE-1.0.18-1-msys-1.0.18-bin.tar.lzma
msysCORE-1.0.18-1-msys-1.0.18-doc.tar.lzma
msysCORE-1.0.18-1-msys-1.0.18-ext.tar.lzma
msysCORE-1.0.18-1-msys-1.0.18-lic.tar.lzma
perl-5.8.8-1-msys-1.0.17-bin.tar.lzma
sed-4.2.1-2-msys-1.0.13-bin.tar.lzma
tar-1.23-1-msys-1.0.13-bin.tar.lzma
termcap-0.20050421_1-2-msys-1.0.13-bin.tar.lzma
texinfo-4.13a-2-msys-1.0.13-bin.tar.lzma
xz-5.0.3-1-msys-1.0.17-bin.tar.lzma
zlib-1.2.7-1-msys-1.0.17-dll.tar.lzma

1

Ich hatte letztes Jahr die Anweisungen in emacs / nt / INSTALL für den 32-Bit-Build ausprobiert, aber etwas ist schiefgegangen (ich weiß nicht mehr genau, was), also habe ich kürzlich die Anweisungen für emacsbinw64 ausprobiert - es hat sehr gut funktioniert und es hat funktioniert war einfacher, auch die notwendigen Bibliotheken zu bekommen. Es verwendet MSYS2 und MinGW-w64 für einen 64-Bit-Build - das emacsbinw64-Projekt bietet Binärdateien unter https://sourceforge.net/projects/emacsbinw64/files/ .

Deshalb habe ich einige Anweisungen nach diesem Entwurf mit dem Feedback von Eli Zaretski und dem Autor Chris Zheng verfasst. Die Vollversion finden Sie unter http://git.savannah.gnu.org/cgit/emacs.git/plain/nt/INSTALL .W64? H = emacs-25 (beinhaltet auch das Bauen aus einem Release-Tarball).

Bei einer Intel i3- und Hochgeschwindigkeits-Internetverbindung (YMMV) dauerte dies insgesamt etwa 90 Minuten. Beachten Sie, dass der größte Teil der Arbeit zum Erstellen unter Windows darin besteht, nur die Build-Umgebung einzurichten ...


Bedarf

Der insgesamt benötigte Speicherplatz beträgt 3 GB: 1,8 GB für MSYS2 / MinGW-w64 und 1,2 GB für Emacs mit dem vollständigen Repository.

Laden Sie MinGW-w64 und MSYS2 herunter und installieren Sie es

Laden Sie die x86_64-Version von MSYS2 (dh msys2-x86_64-.exe) von https://sourceforge.net/projects/msys2/files/Base/x86_64 herunter .

Führen Sie diese Datei aus, um MSYS2 in Ihrem bevorzugten Verzeichnis zu installieren, z. B. das Standardverzeichnis C: \ msys64. Dadurch wird auch MinGW-w64 installiert. Beachten Sie, dass Verzeichnisnamen, die Leerzeichen enthalten, Probleme verursachen können.

Anschließend müssen Sie Ihrer Windows PATH-Umgebungsvariablen die folgenden Verzeichnisse hinzufügen:

c:\msys64\usr\bin;c:\msys64\mingw64\bin

Sie können dies über Systemsteuerung / System und Sicherheit / System / Erweiterte Systemeinstellungen / Umgebungsvariablen / Bearbeitungspfad tun.

Durch Hinzufügen dieser Verzeichnisse zu Ihrem PATH wird Emacs mitgeteilt, wo sich die DLLs befinden, die ausgeführt werden sollen, sowie einige optionale Befehle wie grep und find. Diese Befehle sind auch in der Windows-Konsole verfügbar.

Laden Sie die erforderlichen Pakete herunter und installieren Sie sie

Führen Sie msys2_shell.bat in Ihrem MSYS2-Verzeichnis aus, und ein BASH-Fenster wird geöffnet.

Verwenden Sie in der BASH-Eingabeaufforderung den folgenden Befehl, um die erforderlichen Pakete zu installieren (Sie können sie mit Umschalt + Einfügen kopieren und in die Shell einfügen):

pacman -S base-devel \
mingw-w64-x86_64-toolchain \
mingw-w64-x86_64-xpm-nox \
mingw-w64-x86_64-libtiff \
mingw-w64-x86_64-giflib \
mingw-w64-x86_64-libpng \
mingw-w64-x86_64-libjpeg-turbo \
mingw-w64-x86_64-librsvg \
mingw-w64-x86_64-libxml2 \
mingw-w64-x86_64-gnutls

Sie haben jetzt eine vollständige Build-Umgebung für Emacs.

Installieren Sie Git (optional) und deaktivieren Sie autocrlf

Wenn Sie Git noch nicht auf Ihrem System haben, können Sie es in Ihrer MSYS2-Umgebung installieren mit:

pacman -S git

Die Autocrlf-Funktion von Git kann die Konfigurationsdatei beeinträchtigen. Deaktivieren Sie diese Funktion daher am besten, indem Sie den folgenden Befehl ausführen:

git config core.autocrlf false

Holen Sie sich den Emacs-Quellcode

Gehen Sie wie folgt vor, um das Git-Repository herunterzuladen: Dadurch wird die Emacs-Quelle in C: \ emacs \ emacs-25 verschoben:

mkdir /c/emacs
cd /c/emacs
git clone git://git.sv.gnu.org/emacs.git emacs-25

Baue Emacs

Jetzt können Sie Emacs mit Autogen erstellen und installieren, konfigurieren, erstellen und installieren.

Zuerst müssen wir zur MinGW-w64-Umgebung wechseln. Beenden Sie die MSYS2 BASH-Konsole und führen Sie mingw64_shell.bat im Ordner C: \ msys64 aus. Anschließend kehren Sie in Ihr Emacs-Quellverzeichnis zurück, z.

cd /c/emacs/emacs-25

Führen Sie autogen aus

Wenn Sie die Entwicklungsquellen erstellen, führen Sie autogen aus, um das Konfigurationsskript zu generieren:

./autogen.sh

Führen Sie configure aus

Jetzt können Sie configure ausführen, wodurch die verschiedenen Makefiles erstellt werden.

Die Option '--prefix' gibt einen Speicherort für die resultierenden Binärdateien an, die von 'make install' verwendet werden. In diesem Beispiel setzen wir ihn auf C: \ emacs \ emacs-25. Wenn kein Präfix angegeben wird, werden die Dateien in den Standard-Unix-Verzeichnissen in Ihrem Verzeichnis C: \ msys64 abgelegt. Dies wird jedoch nicht empfohlen.

Beachten Sie auch, dass wir Imagemagick deaktivieren müssen, da Emacs es unter Windows noch nicht unterstützt.

PKG_CONFIG_PATH=/mingw64/lib/pkgconfig \
./configure --prefix=/c/emacs/emacs-25 --without-imagemagick

Führen Sie make aus

Dadurch werden Emacs kompiliert, die ausführbaren Dateien erstellt und im Verzeichnis src abgelegt:

make

Um den Vorgang zu beschleunigen, können Sie versuchen, ihn auszuführen

make -jN

Dabei ist N die Anzahl der Kerne in Ihrem System. Wenn Ihr MSYS2-Make die parallele Ausführung unterstützt, wird es erheblich schneller ausgeführt.

Führen Sie make install aus

Jetzt können Sie "make install" ausführen, wodurch die ausführbare Datei und andere Dateien an den im Konfigurationsschritt angegebenen Speicherort kopiert werden. Dadurch werden die Verzeichnisse bin, libexec, share und var erstellt:

make install

Du kannst auch sagen

make install prefix=/c/somewhere

um sie woanders zu installieren.

Testen Sie Emacs

Führen Sie es aus, um es zu testen

./bin/runemacs.exe -Q

und wenn alles gut gegangen ist, haben Sie eine neue 64-Bit-Version von Emacs.

Machen Sie eine Verknüpfung

Um eine Verknüpfung zum Ausführen der neuen Emacs zu erstellen, klicken Sie mit der rechten Maustaste auf den Speicherort, an dem Sie sie ablegen möchten, z. B. den Desktop, wählen Sie Neu / Verknüpfung aus, wählen Sie dann runemacs.exe im Ordner bin der neuen Emacs aus und geben Sie ihm einen Namen .

Sie können beliebige Befehlszeilenoptionen festlegen, indem Sie mit der rechten Maustaste auf die resultierende Verknüpfung klicken, Eigenschaften auswählen und dem Befehl Ziel beliebige Optionen hinzufügen, z. B. --debug-init.

Credits

Vielen Dank an Chris Zheng für die ursprüngliche Build-Gliederung, die vom emacsbinw64-Projekt unter https://sourceforge.net/p/emacsbinw64/wiki/Build%20guideline%20for%20MSYS2-MinGW-w64%20system/ verwendet wird .

Lizenz

Diese Datei ist Teil von GNU Emacs.

GNU Emacs ist freie Software: Sie können sie unter den Bedingungen der GNU General Public License, wie sie von der Free Software Foundation veröffentlicht wurde, entweder Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren Version weitergeben und / oder ändern.

GNU Emacs wird in der Hoffnung verteilt, dass es nützlich sein wird, jedoch OHNE JEGLICHE GARANTIE; ohne auch nur die implizite Garantie der MARKTGÄNGIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Weitere Informationen finden Sie in der GNU General Public License.

Sie sollten eine Kopie der GNU General Public License zusammen mit GNU Emacs erhalten haben. Wenn nicht, siehe http://www.gnu.org/licenses/ .


Fügen Sie einen Schritt hinzu, um alle DLL-Dateien zu kopieren, die nach Abschluss des Builds direkt in der ausführbaren Emacs-Datei abgelegt werden müssen, damit Emacs sich nicht auf einen systemweit definierten Pfad verlassen muss, um diese zu finden Dateien. Außerdem ist es wahrscheinlich erforderlich, die ausführbare (n) Datei (en) für gnutls in das ausführbare Emacs-Verzeichnis zu kopieren. Die letzten Schritte sollten wahrscheinlich dem in der alternativen Antwort eingebauten Emacs 32 ziemlich ähnlich sein.
Lawlist

Ja, die ursprünglichen Anweisungen wurden so geschrieben, aber Eli hielt es für besser, die PATH - lists.gnu.org/archive/html/bug-gnu-emacs/2015-12/msg01476.html zu verwenden. Es ist jedoch eine weitere Option - wenn Sie dies auf diese Weise tun möchten, können Sie einfach alle DLLs im Ordner C: \ msys64 \ mingw64 \ bin in den Ordner emacs bin kopieren - sie sind nur etwa 32 MB groß cp /c/msys64/mingw64/bin/*.dll bin. Ich weiß allerdings nicht viel über Gnutls - gibt es eine einfache Möglichkeit, es auszuprobieren?
Brian Burns

Im allgemeinsten Sinne, ohne es tatsächlich für E-Mails oder ähnliches zu verwenden, ist der allgemeine Test mit der Funktion, die gnutls-available-p ich verstehe, der Grund für die Einfachheit, wenn ich mich nur auf die Systempfade beziehe, aber manchmal möchten die Leute die Emacs verwenden, die auf einem anderen Computer und einem anderen Computer erstellt wurden Sie werden sich fragen, warum Bilder und andere Dinge nicht sofort funktionieren. Es gibt viele Threads mit Leuten, die fragen, warum PDF-Dateien in einem regulären Puffer wie Kauderwelsch aussehen (dh weil die PNG-Unterstützung fehlt) oder warum sie in AUCTeX keine Dokumentansicht oder Vorschau durchführen können (aus demselben Grund).
Lawlist

Okay, gnutls-available-pgibt t nur mit der PATH-Einstellung zurück, also gehe ich davon aus, dass es jetzt funktioniert - ich werde einen Patch mit der alternativen Methode zum Kopieren der DLLs und möglicherweise der gnutls-Exes einreichen, falls diese benötigt werden, und hier aktualisieren später.
Brian Burns
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.