Jak zbudować główną gałąź Emacsa (inaczej pień) na MS-Windows

11

Zanurzyłem się dzisiaj i zacząłem poszukiwania najnowszej kompilacji programistów Emacsa - znanej pod nazwą Emacs Trunk - dla systemu MS-Windows.

Znalazłem starego bloga i przeszedłem procedurę, ale spotkałem się z komunikatem o błędzie informującym, że dana metoda nie jest już obsługiwana. Komunikat o błędzie skierował mnie do odczytu: .../emacs/nt/INSTALL. Cóż, to wszystko w porządku i eleganckie, jeśli infrastruktura do budowy Emacsa została już zainstalowana / skonfigurowana.

Przydałoby się, gdyby istniał krok 1, 2, 3, który opisuje, jakie narzędzia są potrzebne i jak przejść do instalacji / konfiguracji, ze szczególnym uwzględnieniem tworzenia Emacsa na MS-Windows.

W przypadku, gdy ktoś chciałby przygotować szczegółowy opis, prosimy o odpowiedź. Jeśli nie, sam go napiszę, gdy wymyślę, jak to zrobić. Spotkałem się z dodatkowymi przeszkodami i w międzyczasie wysłałem raport o błędzie - jeszcze nie wiem, czy to ja, czy może błąd: https://debbugs.gnu.org/cgi/bugreport.cgi? błąd = 21582

Myślę, że więcej osób skłaniałoby się do tworzenia własnych Emacsów, gdyby istniała „ściągawka”, z której mogliby korzystać początkujący programiści lub hobbystycy tacy jak ja (którzy nie są programistami z zawodu).

lista prawnicza
źródło
Myślę, że możesz zbudować Emacsa na Windows na więcej niż jeden sposób (tj. Najprawdopodobniej MingW / MS VCC, ale także być może clang. Możesz tu znaleźć listę wymaganych bibliotek (jest ich wiele) emacswiki.org/emacs / BuildingEmacsWithMinGW, ale te informacje są z pewnością datowane (najprawdopodobniej około 10 lat!)
wvxvw
W przypadku wersji 64-bitowej istnieje dobry zapis z emacsbinw64 na sourceforge.net/p/emacsbinw64/wiki/... - używa MSYS2 i MinGW-w64. Może uwagi nt / INSTALL powinny zostać zaktualizowane, aby zawierały również tę opcję?
Brian Burns,
@ bburns.km - dziękuję za link. Zastanawiałem się, jak zbudować wersję 64-bitową, ale nie miałem czasu na zainwestowanie niezliczonych godzin, żeby to rozpracować. W przyszłości na pewno sprawdzę link, aby zobaczyć, czy jest to krok 1, 2, 3, czy tylko zarys, w którym zaawansowani programiści wiedzą, jak wypełnić brakujące puste miejsca. Instrukcje takie jak nt / INSTALL są w zasadzie bezużyteczne dla nowicjuszy takiej jak ja - ma to znaczenie dla programisty, ale dla mnie nie znaczy praktycznie nic - podczas gdy moje 5-łatwych kroków to rzeczywiście 1, 2, 3, że każdy może śledzić.
prawnik z
@lawlist Tak, to dobry zapis - próbowałem rok lub dwa lata temu, aby stworzyć 32-bitową kompilację, ale coś poszło nie tak i / lub się w niej zgubiłem - tak jak mówisz, jest to dość skomplikowane dla kogoś, kto nie jest przyzwyczajony do budowania rzeczy ze źródła. Ale instrukcje emacsbinw64 są nieco prostsze i działały całkiem dobrze - wystarczyło kilka godzin, aby przejść przez to wszystko i sprawić, by działało. Myślę, że zapytam na devlist o aktualizację dokumentu nt / INSTALL - mogą istnieć sekcje 32-bitowe i 64-bitowe. Zacząłem pisać dokument, ale zdałem sobie sprawę, że nie wniósł on zbyt wiele do instrukcji emacsbinw64, ale można go tam wykorzystać.
Brian Burns,

Odpowiedzi:

9

Zaleca się, aby użytkownicy przeczytali cały ../emacs/nt/INSTALLkod źródłowy Emacsa.


Szybki start - 5 łatwych kroków :

Ta odpowiedź została przetestowana na WindowsXP - SP3. Ścieżki instalacji będą musiały zostać dostosowane w zależności od indywidualnych preferencji użytkownika. W tym przykładzie:

  • Pulpit to: C:\Documents and Settings\lawlist\Desktop

  • gitInstalacji: C:\git

  • MinGWInstalacji: C:\mingw

  • Lokalizacja pobierania git głównego oddziału Emacsa to: C:\Documents and Settings\lawlist\Desktop\emacs

  • Celem instalacji Emacsa jest: C:\Documents and Settings\lawlist\Desktop\trunk

Krok 1 : Zainstaluj giti pamiętaj, aby podczas instalacji wybrać opcję „sprawdź, jak jest, zatwierdz jak jest”:

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

Git-2.5.3-32-bit.exe

Uruchom instalatora.

Kolejny

Kolejny

Standardowy katalog instalacyjny to C:\Program Files\Git, ale zamiast tego wybrałem: c:\git

Wybierz komponenty: domyślnie jest w porządku, ale zamiast tego nic nie wybrałem.

Wybierz folder menu Start: domyślnie jest w porządku, ale postanowiłem nie tworzyć folderu zamiast.

Dostosowywanie środowiska PATH: ustawienie domyślne jest w porządku: używaj Git tylko z Bash.

;; W następnej sekcji zwróć szczególną uwagę na ustawienie domyślne - patrz błąd Emacsa # 21582.

Skonfiguruj konwersje kończące linię: Emacs wymaga niestandardowego ustawienia „kasy jak jest, zatwierdza jak jest”

Konfigurowanie emulatora terminala do używania z Git Bash: domyślnie jest w porządku: użyj MinTTY (domyślny terminal MSys2)

Konfigurowanie eksperymentalnych poprawek wydajności: NIE wybrałem „Włącz buforowanie systemu plików”.

Zakończ [w razie potrzeby wyświetl informacje o wersji]

UWAGA: autogen.sh(i być może niektóre programy innych firm) wymagają ustawienia gitŚCIEŻKI, aby można było wywoływać pliki wykonywalne bez użycia ścieżki bezwzględnej. Autor tej odpowiedzi ma osobiste preferencje do używania ścieżek bezwzględnych i nie modyfikowania ŚCIEŻKI; jednak większość ludzi woli modyfikować PATH dla bieżących i przyszłych sesji. Na przykład w systemie Windows XP zmienną PATH można ustawić za pomocą przycisku Panel sterowania / Właściwości systemu / zakładka Zaawansowane / Zmienne środowiskowe. Wydaje się, że istnieją dwa (2) widoki / opinie dotyczące tego, czy użytkownik powinien ustawić Zmienne użytkownika czy system Zmienne - ścieżki są oddzielone średnikami bez spacji. Ta odpowiedź po prostu ustawia ŚCIEŻKĘ na czas trwania sesji, używając exportprzedstawionych poniżej. Emacs autogen.shszukagit dowodzić ŚCIEŻKĄ i narzeka, jeśli nie można jej znaleźć.

Krok 2 : ZainstalujMinGW

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

Krok numer 3 : Pobierz następujące ezwinportsspakowane pakiety i rozpakuj je do mingwkatalogu głównego .

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

;; rozpakuj wszystkie poniższe pakiety ezwinports c:/mingw, zastępując wszelkie duplikaty.

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

Krok 4 : Pobierz najnowsze pliki źródłowe głównego oddziału Emacsa za pomocą git-bashpowłoki.

c:\git\git-bash.exe

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

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

exit

Krok numer 5 : Zbuduj gałąź główną Emacsa i po zakończeniu skopiuj pliki .dll.

;; otwórz ogólny wiersz polecenia

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

Rozpakuj całą zawartość gnutls-3.3.11-w32-bin.zipdoC:\Documents and Settings\lawlist\Desktop\trunk


RĘCZNA INSTALACJA - MinGW / MSYS / EZwinports

Dla tych odważnych dusz, które są zainteresowane ręczną instalacją MinGW / MSYS / EZwinports, poniższe pliki są używane przez tego autora w systemie Windows XP do utworzenia udanej 32-bitowej kompilacji z domyślnie włączonymi następującymi opcjami konfiguracji. Konfiguracja i konfiguracja będą się różnić w zależności od osobistych preferencji poszczególnych użytkowników i wykraczają poza zakres tej odpowiedzi.

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
lista prawnicza
źródło
1

W zeszłym roku wypróbowałem instrukcje w emacs / nt / INSTALL dla kompilacji 32-bitowej, ale coś poszło nie tak (dokładnie nie pamiętam co dokładnie), więc ostatnio wypróbowałem instrukcje dla emacsbinw64 - działało bardzo dobrze i to łatwiej było również uzyskać niezbędne biblioteki. Używa MSYS2 i MinGW-w64 do kompilacji 64-bitowej - projekt emacsbinw64 zapewnia pliki binarne na https://sourceforge.net/projects/emacsbinw64/files/ .

Napisałem więc kilka instrukcji zgodnie z tym konspektem, z opiniami Eli Zaretskiego i autora Chrisa Zhenga - pełna wersja jest pod adresem http://git.savannah.gnu.org/cgit/emacs.git/plain/nt/INSTALL .W64? H = emacs-25 (obejmuje również kompilację z archiwum wydania).

Łącznie zajęło to około 90 minut w przypadku procesora Intel i3 i szybkiego łącza internetowego - YMMV. Pamiętaj, że większość pracy związanej z budowaniem w systemie Windows polega tylko na skonfigurowaniu środowiska kompilacji ...


Wymagania

Wymagane miejsce to 3 GB: 1,8 GB dla MSYS2 / MinGW-w64 i 1,2 GB dla Emacsa z pełnym repozytorium.

Pobierz i zainstaluj MinGW-w64 i MSYS2

Pobierz wersję MSYS2 x86_64 (tj. Msys2-x86_64-.exe) z https://sourceforge.net/projects/msys2/files/Base/x86_64 .

Uruchom ten plik, aby zainstalować MSYS2 w preferowanym katalogu, np. Domyślnym C: \ msys64 - spowoduje to również instalację MinGW-w64. Pamiętaj, że nazwy katalogów zawierające spacje mogą powodować problemy.

Następnie musisz dodać następujące katalogi do zmiennej środowiskowej PATH systemu Windows:

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

możesz to zrobić za pomocą Panelu sterowania / System i zabezpieczenia / System / Zaawansowane ustawienia systemu / Zmienne środowiskowe / Ścieżka edycji.

Dodanie tych katalogów do PATH informuje Emacsa, gdzie znaleźć biblioteki DLL, które musi uruchomić, oraz niektóre opcjonalne polecenia, takie jak grep i find. Te polecenia będą również dostępne w konsoli Windows.

Pobierz i zainstaluj niezbędne pakiety

Uruchom msys2_shell.bat w katalogu MSYS2, a zobaczysz otwarte okno BASH.

W wierszu BASH użyj następującego polecenia, aby zainstalować niezbędne pakiety (możesz skopiować i wkleić go do powłoki za pomocą Shift + Insert):

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

Masz teraz pełne środowisko kompilacji dla Emacsa.

Zainstaluj Git (opcjonalnie) i wyłącz autocrlf

Jeśli nie masz Git w swoim systemie, możesz zainstalować go w środowisku MSYS2 za pomocą:

pacman -S git

Funkcja autocrlf Git może zakłócać plik konfiguracyjny, dlatego najlepiej wyłączyć tę funkcję, uruchamiając polecenie:

git config core.autocrlf false

Pobierz kod źródłowy Emacsa

Aby pobrać repozytorium Git, wykonaj następujące czynności - spowoduje to umieszczenie źródła Emacsa w C: \ emacs \ emacs-25:

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

Buduj Emacsa

Teraz jesteś gotowy do budowania i instalowania Emacsa z autogenem, konfigurowania, tworzenia i instalacji.

Najpierw musimy przejść do środowiska MinGW-w64. Wyjdź z konsoli BASYS MSYS2 i uruchom plik mingw64_shell.bat w folderze C: \ msys64, a następnie wróć do katalogu źródłowego Emacsa, np .:

cd /c/emacs/emacs-25

Uruchom autogen

Jeśli budujesz źródła programistyczne, uruchom autogen, aby wygenerować skrypt konfiguracyjny:

./autogen.sh

Uruchom konfigurację

Teraz możesz uruchomić config, który zbuduje różne Makefile.

Opcja „--prefix” określa lokalizację wynikowych plików binarnych, z których skorzysta „make install” - w tym przykładzie ustawiliśmy ją na C: \ emacs \ emacs-25. Jeśli prefiks nie zostanie określony, pliki zostaną umieszczone w standardowych katalogach uniksowych znajdujących się w katalogu C: \ msys64, ale nie jest to zalecane.

Pamiętaj również, że musimy wyłączyć Imagemagick, ponieważ Emacs nie obsługuje go jeszcze w systemie Windows.

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

Uruchom make

Spowoduje to kompilację Emacsa i kompilację plików wykonywalnych, umieszczając je w katalogu src:

make

Aby przyspieszyć proces, możesz spróbować uruchomić

make -jN

gdzie N jest liczbą rdzeni w twoim systemie - jeśli twój MSYS2 obsługuje równoległe wykonywanie, będzie działał znacznie szybciej.

Uruchom make install

Teraz możesz uruchomić polecenie „make install”, które skopiuje plik wykonywalny i inne pliki do lokalizacji określonej w kroku konfiguracji. Spowoduje to utworzenie katalogów bin, libexec, share i var:

make install

Możesz też powiedzieć

make install prefix=/c/somewhere

zainstalować je gdzie indziej.

Przetestuj Emacsa

Aby to przetestować, uruchom

./bin/runemacs.exe -Q

a jeśli wszystko pójdzie dobrze, będziesz mieć nową 64-bitową wersję Emacsa.

Zrób skrót

Aby utworzyć skrót do uruchomienia nowego Emacsa, kliknij prawym przyciskiem myszy lokalizację, w której chcesz go umieścić, np. Pulpit, wybierz Nowy / Skrót, a następnie wybierz runemacs.exe w folderze bin nowego Emacsa i nadaj mu nazwę .

Możesz ustawić dowolne opcje wiersza poleceń, klikając prawym przyciskiem myszy wynikowy skrót, wybierz Właściwości, a następnie dodaj dowolne opcje do polecenia Cel, np. --Debug-init.

Kredyty

Podziękowania dla Chrisa Zhenga za oryginalny konspekt kompilacji używany w projekcie emacsbinw64, który znajduje się na stronie https://sourceforge.net/p/emacsbinw64/wiki/Build%20guideline%20for%20MSYS2-MinGW-w64%20system/ .

Licencja

Ten plik jest częścią GNU Emacs.

GNU Emacs jest wolnym oprogramowaniem: możesz go redystrybuować i / lub modyfikować zgodnie z warunkami Powszechnej Licencji Publicznej GNU opublikowanej przez Free Software Foundation, albo w wersji 3 Licencji, albo (według twojego wyboru) dowolnej późniejszej wersji.

GNU Emacs jest rozpowszechniany w nadziei, że będzie użyteczny, ale BEZ ŻADNEJ GWARANCJI; nawet bez dorozumianej gwarancji PRZYDATNOŚCI HANDLOWEJ lub PRZYDATNOŚCI DO OKREŚLONEGO CELU. Aby uzyskać więcej informacji, zobacz Powszechną Licencję Publiczną GNU.

Powinieneś otrzymać kopię Powszechnej Licencji Publicznej GNU wraz z GNU Emacs. Jeśli nie, zobacz http://www.gnu.org/licenses/ .

Brian Burns
źródło
Zastanów się nad dodaniem kroku, aby skopiować wszystkie pliki .dll, które muszą zostać umieszczone w tym samym pliku, co plik wykonywalny Emacsa po zakończeniu kompilacji, aby Emacs nie musiał polegać na ogólnosystemowej ścieżce, aby je znaleźć akta. Prawdopodobnie konieczne jest również skopiowanie plików wykonywalnych gnutl do katalogu wykonywalnego Emacsa. Ostatnie kroki powinny prawdopodobnie być dość podobne do kompilacji Emacsa 32 w alternatywnej odpowiedzi.
prawnik
Tak, oryginalne instrukcje zostały napisane w ten sposób, ale Eli pomyślał, że lepiej użyć PATH - lists.gnu.org/archive/html/bug-gnu-emacs/2015-12/msg01476.html. Jest to jednak inna opcja - jeśli chcesz to zrobić, możesz po prostu skopiować wszystkie biblioteki DLL z folderu C: \ msys64 \ mingw64 \ bin do folderu bin emacsa - mają one tylko około 32 MB cp /c/msys64/mingw64/bin/*.dll bin. Jednak niewiele wiem o gnutlach - czy istnieje prosty sposób, aby to sprawdzić?
Brian Burns
W najogólniejszym sensie, bez faktycznego używania go do wiadomości e-mail lub czegoś innego, ogólny test jest z funkcją gnutls-available-p Rozumiem powód prostoty, odnosząc się tylko do ścieżek systemowych, ale czasami ludzie mogą chcieć używać Emacsa na innym komputerze i będą się zastanawiać, dlaczego obrazy i inne rzeczy nie działają od razu po wyjęciu z pudełka. Istnieje wiele wątków, w których ludzie pytają, dlaczego pliki pdf wyglądają jak bełkot w zwykłym buforze (tj. Dlatego, że brak obsługi png) lub dlaczego nie mogą przeglądać dokumentów lub wyświetlać podglądu w AUCTeX (z tego samego powodu).
prawnik
Ok, gnutls-available-pzwraca t używając tylko ustawienia PATH, więc założę, że teraz działa - prześlę łatkę z alternatywną metodą, aby skopiować biblioteki DLL, i prawdopodobnie exe gnutls, jeśli są potrzebne, i zaktualizuj tutaj później.
Brian Burns