วิธีการสร้าง Emacs master branch (aka trunk) บน MS-Windows


11

ฉันกระโดดลงไปในวันนี้และเริ่มต้นภารกิจเพื่อสร้าง Emacs master branch build ล่าสุด - หรือที่รู้จักในชื่อ Emacs Trunk - สำหรับ MS-Windows

ฉันพบบล็อกเก่าและผ่านขั้นตอนเพียงเพื่อจะพบกับข้อผิดพลาดบอกฉันว่าวิธีการเฉพาะไม่ได้รับการสนับสนุนอีกต่อไป ข้อความแสดงข้อผิดพลาดบอกให้ฉันอ่าน: .../emacs/nt/INSTALL. นั่นคือทั้งหมดที่ดีและสวยงามถ้าโครงสร้างพื้นฐานสำหรับการสร้าง Emacs ได้รับการติดตั้ง / กำหนดค่าแล้ว

แน่นอนว่ามันจะมีประโยชน์หากมีขั้นตอนที่ 1, 2, 3 ที่อธิบายถึงเครื่องมือที่จำเป็นและวิธีการติดตั้ง / กำหนดค่าด้วยตาเฉพาะเพื่อสร้าง Emacs บน MS-Windows

ในกรณีที่ใครก็ตามที่ต้องการเตรียมการเขียนรายละเอียดโปรดโพสต์คำตอบ ถ้าไม่ฉันจะเขียนขึ้นเองเมื่อฉันคิดออกว่าจะทำอย่างไร ฉันพบกับบล็อกถนนเพิ่มเติมและได้ส่งรายงานข้อผิดพลาดในระหว่างกาล - ฉันยังไม่ทราบว่าเป็นฉันหรืออาจเป็นข้อผิดพลาด: https://debbugs.gnu.org/cgi/bugreport.cgi? ข้อผิดพลาด = 21582

ฉันคิดว่าผู้คนจำนวนมากจะมีแนวโน้มที่จะสร้าง Emacs ของตัวเองหากมี "cheat-sheet" ที่สามารถใช้งานได้โดยผู้เริ่มต้นโปรแกรมเมอร์หรือมือสมัครเล่นเช่นตัวเอง (ซึ่งไม่ใช่โปรแกรมเมอร์โดยการค้าขาย)


ฉันคิดว่าคุณสามารถสร้าง Emacs บน Windows ได้มากกว่าหนึ่งวิธี (เช่น MingW / MS VCC ส่วนใหญ่ แต่อาจเป็นเสียงดังกราวคุณสามารถดูรายการไลบรารีที่ต้องการ (มีจำนวนมาก) emacswiki.org/emacs / BuildingEmacsWithMinGWแต่ข้อมูลนี้แน่นอนลงวันที่ (น่าจะสิบปีหรือมากกว่านั้น!)
wvxvw

สำหรับรุ่น 64 บิตจะมีการเขียนที่ดีจาก emacsbinw64 ที่sourceforge.net/p/emacsbinw64/wiki/ ...... - ใช้ MSYS2 และ MinGW-w64 บางทีโน้ต nt / INSTALL ควรได้รับการอัปเดตเพื่อรวมตัวเลือกนี้ด้วยหรือไม่
Brian Burns

@ bburns.km - ขอบคุณสำหรับลิงค์ ฉันสงสัยว่าจะสร้าง 64 บิตได้อย่างไร แต่ไม่มีเวลาว่างในการลงทุนนับไม่ถ้วนเพื่อหาคำตอบ ในอนาคตฉันจะตรวจสอบลิงก์เพื่อดูว่าเป็นสิ่งที่เป็นขั้นตอนที่ 1, 2, 3 หรือเพียงแค่โครงร่างที่โปรแกรมเมอร์ขั้นสูงรู้วิธีเติมช่องว่างที่หายไป คำแนะนำเช่น nt / INSTALL นั้นไร้ประโยชน์สำหรับมือใหม่อย่างฉัน - มันมีความหมายต่อโปรแกรมเมอร์ แต่มันไม่มีความหมายอะไรเลยสำหรับฉัน - ในขณะที่ขั้นตอนที่ 5 ง่าย ๆ ของฉันเป็นจริง 1, 2, 3 ที่ทุกคน สามารถติดตาม
ฏหมาย

@ Lawlist ใช่มันเป็นงานเขียนที่ดี - ฉันพยายามหนึ่งหรือสองปีที่ผ่านมาเพื่อสร้าง 32 บิต แต่มีบางอย่างผิดปกติและ / หรือฉันหลงทาง - เช่นคุณบอกว่ามันค่อนข้างซับซ้อนสำหรับคนที่ไม่คุ้นเคยกับการสร้างสิ่งต่าง ๆ จากแหล่ง แต่คำแนะนำของ emacsbinw64 นั้นเรียบง่ายกว่าและใช้งานได้ดี - ใช้เวลาสองสามชั่วโมงกว่าจะผ่านได้ทั้งหมดและทำให้มันใช้งานได้ ฉันคิดว่าฉันจะขอ devlist เกี่ยวกับการปรับปรุงเอกสาร nt / ติดตั้ง - อาจมีส่วน 32 บิตและ 64 บิต ฉันเริ่มเขียนเอกสาร แต่รู้ว่ามันไม่ได้เพิ่มคำแนะนำ emacsbinw64 มากเกินไป แต่มันสามารถใช้ได้ที่นั่น
Brian Burns

คำตอบ:


9

ขอแนะนำให้ผู้ใช้อ่านทั้งหมดที่../emacs/nt/INSTALLมีอยู่ภายในซอร์สโค้ด Emacs


เริ่มต้นอย่างรวดเร็ว - 5 ขั้นตอนง่าย ๆ :

คำตอบนี้ทดสอบบน WindowsXP - SP3 เส้นทางการติดตั้งจะต้องมีการปรับขึ้นอยู่กับการตั้งค่าส่วนบุคคลของผู้ใช้ ในตัวอย่างนี้:

  • เดสก์ท็อปคือ: C:\Documents and Settings\lawlist\Desktop

  • การgitติดตั้งคือ: C:\git

  • การMinGWติดตั้งคือ: C:\mingw

  • ตำแหน่งดาวน์โหลด git ของสาขาหลักของ Emacs คือ: C:\Documents and Settings\lawlist\Desktop\emacs

  • เป้าหมายสำหรับการติดตั้ง Emacs คือ: C:\Documents and Settings\lawlist\Desktop\trunk

ขั้นตอนที่ 1 : ติดตั้งgitและตรวจสอบให้แน่ใจว่าได้เลือก "ชำระเงินตามสภาพ, กระทำตามสภาพ" ระหว่างการติดตั้ง:

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

Git-2.5.3-32-bit.exe

เรียกใช้โปรแกรมติดตั้ง

ต่อไป

ต่อไป

ไดเรกทอรีการติดตั้งมาตรฐานคือC:\Program Files\Gitแต่ฉันเลือกแทน: c:\git

เลือกส่วนประกอบ: ค่าเริ่มต้นก็โอเค แต่ฉันไม่ได้เลือกอะไรแทน

เลือกโฟลเดอร์เมนูเริ่มต้น: เริ่มต้นคือไม่เป็นไรฉันเลือกที่จะไม่สร้างโฟลเดอร์แทน

การปรับสภาพแวดล้อม PATH ของคุณ: ค่าเริ่มต้นคือโอเค: ใช้ Git จาก Bash เท่านั้น

;; สำหรับส่วนถัดไปนี้ให้ใส่ใจกับการตั้งค่าที่ไม่ใช่ค่าเริ่มต้น - ดูข้อผิดพลาด Emacs # 21582

กำหนดค่าการแปลงบรรทัดที่สิ้นสุด: Emacs ต้องการการตั้งค่าที่ไม่ใช่ค่าเริ่มต้นของ "checkout as-is, commit as-is"

การกำหนดค่าเทอร์มินัลอีมูเลเตอร์เพื่อใช้กับ Git Bash: ค่าเริ่มต้นคือโอเค: ใช้ MinTTY (เทอร์มินัลเริ่มต้นของ MSys2)

การกำหนดค่าการปรับแต่งประสิทธิภาพเชิงทดลอง: ฉันเลือกที่จะไม่ "เปิดใช้งานการแคชระบบไฟล์"

เสร็จสิ้น [ดูบันทึกย่อประจำรุ่นหากต้องการ]

หมายเหตุ: autogen.sh(และบางโปรแกรมของบุคคลที่สาม) จำเป็นต้องมีการgitตั้งค่า PATH เพื่อให้สามารถเรียกใช้ไฟล์ปฏิบัติการได้โดยไม่ต้องใช้พา ธ สัมบูรณ์ ผู้เขียนคำตอบนี้มีการตั้งค่าส่วนตัวสำหรับการใช้เส้นทางที่แน่นอนและไม่แก้ไขเส้นทาง; อย่างไรก็ตามคนส่วนใหญ่ดูเหมือนจะชอบการปรับเปลี่ยน PATH สำหรับเซสชันปัจจุบันและอนาคต บน Windows XP ตัวอย่างเช่น PATH สามารถตั้งค่าภายในแผงควบคุม / คุณสมบัติระบบ / ปุ่มขั้นสูง / ตัวแปรสภาพแวดล้อมและมีมุมมอง / ความคิดเห็นเกี่ยวกับว่าผู้ใช้ควรตั้งค่าตัวแปรผู้ใช้หรือระบบ ตัวแปร - พา ธ ถูกคั่นด้วยอัฒภาคโดยไม่มีช่องว่าง คำตอบนี้จะตั้งค่า PATH ในช่วงเวลาของเซสชั่นโดยใช้การexportตั้งค่าที่นี่ด้านล่าง The Emacs autogen.shมองหาgit คำสั่งบน PATH และบ่นหากไม่พบ

ขั้นตอนที่ 2 : ติดตั้งMinGW

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

ขั้นตอนที่ 3 : ดาวน์โหลดezwinportsแพ็คเกจซิปต่อไปนี้และแตกไปยังmingwไดเรกทอรีราก

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

;; เปิดเครื่องรูดแพคเกจ ezwinports ต่อไปนี้ทั้งหมดc:/mingwเขียนทับรายการที่ซ้ำกัน

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

ขั้นตอนที่ 4 : ดาวน์โหลดไฟล์ต้นฉบับสาขา Emacs หลักโดยใช้git-bashเชลล์

c:\git\git-bash.exe

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

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

exit

ขั้นตอนที่ 5 : สร้างสาขาหลักของ Emacs และคัดลอกทับไฟล์. dll เมื่อเสร็จสิ้น

;; เปิดพรอมต์คำสั่งทั่วไป

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

คลายซิปเนื้อหาทั้งหมดของgnutls-3.3.11-w32-bin.zipถึงC:\Documents and Settings\lawlist\Desktop\trunk


การติดตั้งด้วยตนเอง - MinGW / MSYS / EZwinports

สำหรับผู้ที่ชื่นชอบการผจญภัยที่สนใจทำการติดตั้ง MinGW / MSYS / EZwinports ด้วยตนเองต่อไปนี้เป็นไฟล์ที่ผู้เขียนคนนี้ใช้บน Windows XP เพื่อสร้างบิลด์ 32 บิตที่ประสบความสำเร็จพร้อมตัวเลือกการกำหนดค่าต่อไปนี้ การตั้งค่าและการกำหนดค่าจะแตกต่างกันไปตามความชอบส่วนบุคคลของผู้ใช้แต่ละคนและอยู่นอกเหนือขอบเขตของคำตอบนี้

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

ฉันลองทำตามคำแนะนำใน emacs / nt / INSTALL เมื่อปีที่แล้วสำหรับรุ่น 32 บิต แต่มีบางอย่างผิดปกติ (ฉันจำไม่ได้ว่าอะไรกันแน่) ดังนั้นเมื่อเร็ว ๆ นี้ฉันได้ลองใช้คำแนะนำสำหรับ emacsbinw64 - มันใช้ได้ดีมาก ง่ายกว่าในการรับไลบรารีที่จำเป็นด้วย มันใช้ MSYS2 และ MinGW-w64 สำหรับการสร้าง 64 บิต - โครงการ emacsbinw64 ให้ไบนารีที่https://sourceforge.net/projects/emacsbinw64/files/

ดังนั้นฉันจึงเขียนคำแนะนำต่อไปนี้ขึ้นมาพร้อมกับคำติชมจาก Eli Zaretski และผู้แต่ง Chris Zheng - เวอร์ชันเต็มขึ้นที่http://git.savannah.gnu.org/cgit/emacs.git/plain/nt/INSTALL .W64? h = emacs-25 (เพียงรวมสิ่งปลูกสร้างจาก tarball ที่วางจำหน่ายแล้วด้วย)

สิ่งนี้ใช้เวลาทั้งหมด 90 นาทีใน Intel i3 และการเชื่อมต่ออินเทอร์เน็ตความเร็วสูง - YMMV โปรดทราบว่างานส่วนใหญ่สำหรับการสร้างบน Windows เป็นเพียงการตั้งค่าสภาพแวดล้อมการสร้าง ...


ความต้องการ

พื้นที่ทั้งหมดที่ต้องการคือ 3GB: 1.8GB สำหรับ MSYS2 / MinGW-w64 และ 1.2GB สำหรับ Emacs พร้อมพื้นที่เก็บข้อมูลเต็มรูปแบบ

ดาวน์โหลดและติดตั้ง MinGW-w64 และ MSYS2

ดาวน์โหลดรุ่น x86_64 ของ MSYS2 (เช่น msys2-x86_64-.exe) จากhttps://sourceforge.net/projects/msys2/files/Base/x86_64

เรียกใช้ไฟล์นี้เพื่อติดตั้ง MSYS2 ในไดเรกทอรีที่คุณต้องการเช่นค่าเริ่มต้น C: \ msys64 - สิ่งนี้จะติดตั้ง MinGW-w64 ด้วย โปรดทราบว่าชื่อไดเรกทอรีที่มีช่องว่างอาจทำให้เกิดปัญหา

จากนั้นคุณจะต้องเพิ่มไดเรกทอรีต่อไปนี้ลงในตัวแปรสภาพแวดล้อม Windows PATH ของคุณ:

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

คุณสามารถทำได้ผ่านแผงควบคุม / ระบบและความปลอดภัย / ระบบ / การตั้งค่าระบบขั้นสูง / ตัวแปรสภาพแวดล้อม / เส้นทางการแก้ไข

การเพิ่มไดเรกทอรีเหล่านี้ไปยัง PATH ของคุณจะบอก Emacs ว่าจะค้นหา DLLs ที่ต้องใช้งานได้อย่างไรและคำสั่งเพิ่มเติมบางคำสั่งเช่น grep และ find คำสั่งเหล่านี้จะมีอยู่ที่คอนโซล Windows

ดาวน์โหลดและติดตั้งแพ็คเกจที่จำเป็น

เรียกใช้ msys2_shell.bat ในไดเรกทอรี MSYS2 ของคุณและคุณจะเห็นหน้าต่าง BASH เปิดขึ้น

ในพรอมต์ BASH ใช้คำสั่งต่อไปนี้เพื่อติดตั้งแพ็คเกจที่จำเป็น (คุณสามารถคัดลอกและวางลงในเชลล์ด้วย 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

ตอนนี้คุณมีสภาพแวดล้อมการสร้างที่สมบูรณ์สำหรับ Emacs

ติดตั้ง Git (เป็นทางเลือก) และปิดใช้งาน autocrlf

หากคุณยังไม่มี Git ในระบบของคุณคุณสามารถติดตั้งได้ในสภาพแวดล้อม MSYS2 ของคุณด้วย:

pacman -S git

คุณลักษณะ autocrlf ของ Git อาจรบกวนไฟล์กำหนดค่าดังนั้นจึงเป็นการดีที่สุดที่จะปิดใช้งานคุณลักษณะนี้โดยการเรียกใช้คำสั่ง:

git config core.autocrlf false

รับซอร์สโค้ด Emacs

ในการดาวน์โหลดที่เก็บ Git ให้ทำสิ่งต่อไปนี้ซึ่งจะทำให้ Emacs source เป็น C: \ emacs \ emacs-25:

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

สร้าง Emacs

ตอนนี้คุณพร้อมที่จะสร้างและติดตั้ง Emacs ด้วย autogen กำหนดค่าสร้างและทำการติดตั้ง

ก่อนอื่นเราต้องเปลี่ยนไปใช้สภาพแวดล้อม MinGW-w64 ออกจากคอนโซล MSYS2 BASH และเรียกใช้ mingw64_shell.bat ในโฟลเดอร์ C: \ msys64 จากนั้น cd กลับไปที่ไดเรกทอรีต้นทาง Emacs ของคุณเช่น:

cd /c/emacs/emacs-25

เรียกใช้ autogen

หากคุณกำลังสร้างแหล่งพัฒนาให้รัน autogen เพื่อสร้างสคริปต์กำหนดค่า:

./autogen.sh

เรียกใช้การกำหนดค่า

ตอนนี้คุณสามารถเรียกใช้การกำหนดค่าซึ่งจะสร้าง Makefiles ต่างๆ

ตัวเลือก '- คำนำหน้า' ระบุตำแหน่งสำหรับไฟล์ไบนารี่ที่ได้ซึ่งจะทำการติดตั้ง '- ในตัวอย่างนี้เราตั้งให้ C: \ emacs \ emacs-25 หากไม่ได้ระบุคำนำหน้าไฟล์จะถูกวางในไดเรกทอรี Unix มาตรฐานที่อยู่ในไดเรกทอรี C: \ msys64 ของคุณ แต่ไม่แนะนำ

โปรดทราบว่าเราต้องปิดการใช้งาน Imagemagick เนื่องจาก Emacs ยังไม่รองรับบน Windows

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

วิ่งให้

สิ่งนี้จะรวบรวม Emacs และสร้างไฟล์เรียกทำงานวางไว้ในไดเรกทอรี src:

make

เพื่อเร่งกระบวนการคุณสามารถลองใช้งานได้

make -jN

โดยที่ N คือจำนวนคอร์ในระบบของคุณ - ถ้า MSYS2 ของคุณรองรับการประมวลผลแบบขนานมันจะทำงานได้เร็วขึ้นอย่างมีนัยสำคัญ

ทำการติดตั้ง

ตอนนี้คุณสามารถเรียกใช้ "ทำการติดตั้ง" ซึ่งจะคัดลอกไฟล์ปฏิบัติการและไฟล์อื่น ๆ ไปยังตำแหน่งที่ระบุในขั้นตอนการกำหนดค่า สิ่งนี้จะสร้างไดเร็กทอรี bin, libexec, share และ var:

make install

คุณสามารถพูดได้

make install prefix=/c/somewhere

เพื่อติดตั้งที่อื่น

ทดสอบ Emacs

หากต้องการทดสอบให้เรียกใช้

./bin/runemacs.exe -Q

และถ้าทุกอย่างเป็นไปด้วยดีคุณจะมี Emacs เวอร์ชั่น 64 บิตใหม่

สร้างทางลัด

ในการสร้างทางลัดเพื่อเรียกใช้ Emacs ใหม่ให้คลิกขวาที่ตำแหน่งที่คุณต้องการวางเช่น Desktop เลือก New / Shortcut จากนั้นเลือก runemacs.exe ในโฟลเดอร์ bin ของ Emacs ใหม่และตั้งชื่อ .

คุณสามารถตั้งค่าตัวเลือกบรรทัดคำสั่งใด ๆ โดยคลิกขวาที่ทางลัดที่เกิดขึ้นเลือกคุณสมบัติแล้วเพิ่มตัวเลือกใด ๆ ไปยังคำสั่งเป้าหมายเช่น --debug-init

เครดิต

ขอขอบคุณที่คริสเจิ้งสำหรับต้นฉบับสร้างโครงร่างที่ใช้โดยโครงการ emacsbinw64 ตั้งอยู่ที่https://sourceforge.net/p/emacsbinw64/wiki/Build%20guideline%20for%20MSYS2-MinGW-w64%20system/

การอนุญาต

ไฟล์นี้เป็นส่วนหนึ่งของ GNU Emacs

GNU Emacs เป็นซอฟต์แวร์ฟรี: คุณสามารถแจกจ่ายต่อและ / หรือแก้ไขได้ภายใต้เงื่อนไขของสัญญาอนุญาตสาธารณะทั่วไปของกนูตามที่เผยแพร่โดยมูลนิธิซอฟต์แวร์เสรีไม่ว่าจะเป็นเวอร์ชัน 3 ของสัญญาอนุญาตหรือรุ่นใดก็ได้ในภายหลัง

GNU Emacs เผยแพร่ด้วยความหวังว่ามันจะมีประโยชน์ แต่ไม่มีการรับประกันใด ๆ โดยไม่ต้องมีการรับประกันโดยนัยของความสามารถในการซื้อขายหรือความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ ดูใบอนุญาตสาธารณะทั่วไปของ GNU สำหรับรายละเอียดเพิ่มเติม

คุณควรได้รับสำเนาสัญญาอนุญาตสาธารณะทั่วไปของ GNU พร้อมกับ GNU Emacs ถ้าไม่ได้ดูhttp://www.gnu.org/licenses/


พิจารณาการเพิ่มขั้นตอนในการคัดลอกไฟล์. dll ใด ๆ ที่จำเป็นต้องวางไว้ในตำแหน่งเดียวกับ Emacs ที่สามารถเรียกใช้งานได้เมื่อบิลด์เสร็จสมบูรณ์ดังนั้น Emacs ไม่จำเป็นต้องพึ่งพาพา ธ ที่กำหนดทั้งระบบเพื่อค้นหาไฟล์เหล่านั้น ไฟล์ นอกจากนี้อาจจำเป็นต้องคัดลอกไฟล์ที่เรียกใช้งานได้สำหรับ gnutls ลงในไดเร็กทอรีที่สามารถเรียกใช้งานได้ของ Emacs ขั้นตอนสุดท้ายน่าจะค่อนข้างคล้ายกับ Emacs 32 build ในคำตอบทางเลือก
ฏหมาย

ใช่คำแนะนำดั้งเดิมถูกเขียนขึ้นในลักษณะนั้น แต่ Eli คิดว่าควรใช้ PATH - lists.gnu.org/archive/html/bug-gnu-emacs/2015-12/msg01476.html เป็นอีกตัวเลือกหนึ่ง - หากคุณต้องการทำเช่นนั้นคุณสามารถคัดลอก DLLs ทั้งหมดใน C: \ msys64 \ mingw64 \ bin ไปยังโฟลเดอร์ emacs bin ซึ่งมีขนาดประมาณ 32MB cp /c/msys64/mingw64/bin/*.dll binเท่านั้น ฉันไม่รู้อะไรเกี่ยวกับ gnutls มากนัก - มีวิธีทดสอบอย่างง่ายไหม?
Brian Burns

ในความหมายทั่วไปที่สุดโดยไม่ใช้กับอีเมลหรืออะไรบางอย่างการทดสอบทั่วไปคือฟังก์ชั่นที่gnutls-available-p ฉันเข้าใจถึงเหตุผลของความเรียบง่ายเมื่ออ้างอิงถึงเส้นทางของระบบ แต่บางครั้งผู้คนอาจต้องการใช้ Emacs ที่สร้างบนคอมพิวเตอร์เครื่องอื่น พวกเขาจะสงสัยว่าทำไมภาพและสิ่งต่าง ๆ ไม่ทำงานนอกกรอบ มีเธรดมากมายที่มีคนถามว่าทำไมไฟล์ pdf ดูเหมือนจะพูดพล่อยๆในบัฟเฟอร์ปกติ (เช่นเนื่องจากไม่มีการสนับสนุน png) หรือทำไมพวกเขาไม่สามารถทำ doc-view หรือดูตัวอย่างใน AUCTeX (เหตุผลเดียวกัน)
ฏหมาย

ตกลงgnutls-available-pคืนค่า t โดยใช้การตั้งค่า PATH ดังนั้นฉันจะถือว่ามันใช้งานได้ในตอนนี้ - ฉันจะส่ง patch พร้อมวิธีการทางเลือกเพื่อคัดลอก DLLs และอาจเป็น gnutls exes ถ้าจำเป็นและอัพเดตที่นี่ ต่อมา
Brian Burns
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.