การคอมไพล์ซ้ำด้วย ServBay
ServBay มอบสภาพแวดล้อมสำหรับการพัฒนาเว็บแบบโลคอลที่ครบครันและทรงพลังสำหรับผู้ใช้ macOS และ Windows โดยมีแพ็กเกจซอฟต์แวร์และเครื่องมือที่หลากหลาย ในบางครั้ง นักพัฒนาอาจต้องคอมไพล์ซ้ำด้วยเหตุผลพิเศษ เช่น:
- เปิดใช้งานอ็อปชั่นการคอมไพล์เจาะจงสำหรับบางแพ็กเกจ
- เพิ่มโมดูลหรือส่วนขยายที่ ServBay ไม่ได้ติดตั้งมาให้ (เช่น ส่วนขยาย PHP ใหม่ หรือโมดูล PostgreSQL)
- ใช้ไลบรารีเวอร์ชันที่แตกต่างจากค่าเริ่มต้นของ ServBay สำหรับคอมไพล์
- ปรับแต่งแพ็กเกจที่ ServBay มีให้ตามความต้องการ
ServBay มีเครื่องมือและสภาพแวดล้อมการคอมไพล์ที่จำเป็นเพื่อให้ผู้ใช้สามารถดำเนินการคอมไพล์ซ้ำเหล่านี้ได้อย่างสะดวก
ก่อนเริ่มต้นการคอมไพล์ซ้ำ ผู้ใช้ควรมีความเข้าใจพื้นฐานเกี่ยวกับกระบวนการคอมไพล์ของแต่ละระบบปฏิบัติการ:
- macOS/Linux: เครื่องมือสาย Unix เช่น
configure
,make
,make install
- Windows: ระบบการสร้างของ Visual Studio, MSBuild, cmake ฯลฯ
ข้อกำหนดเบื้องต้น
ก่อนเริ่มการคอมไพล์ซ้ำ ให้ตรวจสอบว่าคุณมีสิ่งเหล่านี้ครบถ้วน:
ติดตั้ง ServBay Development Library: สิ่งนี้คือหัวใจสำคัญสำหรับการคอมไพล์ซ้ำ เพราะประกอบด้วยไฟล์ไลบรารี, header และ resource สำหรับการพัฒนาทั้งหมด ใน ServBay ให้เข้าไปที่เมนูแพ็กเกจซอฟต์แวร์เพื่อดูและติดตั้ง
ติดตั้งชุดเครื่องมือสำหรับพัฒนา:
macOS
ติดตั้ง Xcode Command Line Tools: เป็นชุดเครื่องมือพื้นฐานจาก macOS สำหรับคอมไพล์ (ประกอบด้วย Clang, linker ฯลฯ) เปิด Terminal แล้วสั่ง:
bashxcode-select --install
1หากติดตั้งเรียบร้อยแล้ว จะมีข้อความแจ้ง
ติดตั้งเครื่องมือคอมไพล์เสริม: เช่น
autoconf
,automake
,libtool
ฯลฯ แนะนำให้ใช้ Homebrew ในการติดตั้ง:bashbrew install autoconf automake libtool cmake
1หากยังไม่มี Homebrew กรุณาดูวิธีติดตั้งจากเว็บไซต์ของโครงการ
Windows
ติดตั้ง Visual Studio Build Tools หรือ Visual Studio Community: สำหรับ Windows ต้องมี Microsoft Visual C++ compiler และเครื่องมือ build เลือกวิธีใดก็ได้ดังนี้:
วิธีที่ 1: Visual Studio Build Tools (แนะนำ ขนาดเล็กกว่า)
- ดาวน์โหลดและติดตั้ง Visual Studio Build Tools
- ในขั้นตอนติดตั้ง เลือก "C++ build tools"
- ตรวจสอบว่าเลือกคอมโพเนนต์เหล่านี้ด้วย:
- MSVC v143 - VS 2022 C++ x64/x86 Build Tools
- Windows 11 SDK (เวอร์ชันล่าสุด)
- CMake
วิธีที่ 2: Visual Studio Community
- ดาวน์โหลดและติดตั้ง Visual Studio Community
- ในขั้นตอนติดตั้ง เลือก workload "Desktop development with C++"
- ตรวจสอบว่าเลือก CMake และ Windows SDK ด้วย
ติดตั้งเครื่องมือเสริม: อาจจำเป็นสำหรับโปรเจ็กต์บางตัว:
- Git for Windows: สำหรับดาวน์โหลด source code
- MSYS2 หรือ vcpkg: สำหรับจัดการไลบรารี C/C++
- Python: บาง build script อาจต้องใช้
powershell# ใช้ chocolatey ติดตั้งเครื่องมือเสริม (เลือกใช้) choco install git cmake python msys2
1
2
การตั้งค่าสภาพแวดล้อมสำหรับคอมไพล์
เมื่อติดตั้ง ServBay Development Library และเครื่องมือครบแล้ว ต่อไป คือ การตั้งค่า environment variable เพื่อแจ้งให้คอมไพล์เลอร์และ build system รู้ location ของไลบรารี, header และ binary ต่างๆ เพื่อให้ compilation และ linking ถูกต้อง
แต่ละ OS และสถาปัตยกรรม CPU จะมีขั้นตอนที่ต่างกัน:
macOS
ServBay สำหรับ Mac แบ่งตามสถาปัตยกรรมระหว่าง Intel (x86_64) และ Apple Silicon (Arm64) กรุณาเลือกวิธีการเริ่มต้น environment ที่เหมาะสมกับ Runtime ที่ใช้
Windows
ServBay สำหรับ Windows สนับสนุนสถาปัตยกรรม x64 โดยติดตั้งอยู่ที่ C:\ServBay
ตรวจสอบสถาปัตยกรรม CPU ของ ServBay Runtime
macOS
คุณสามารถเช็คสถาปัตยกรรมที่ใช้ได้ โดยดูจาก executable ในไดเรกทอรี bin
เช่น:
bash
# ตรวจสอบด้วยคำสั่งนี้บน Terminal
$ file /Applications/ServBay/bin/bison
/Applications/ServBay/bin/bison: Mach-O 64-bit executable arm64
1
2
3
2
3
bash
# ตรวจสอบด้วยคำสั่งนี้บน Terminal
$ file /Applications/ServBay/bin/bison
/Applications/ServBay/bin/bison: Mach-O 64-bit executable x86_64
1
2
3
2
3
Windows
ServBay Windows รองรับ x64 สามารถตรวจสอบ executable ได้ใน PowerShell ด้วย:
powershell
# ตรวจสอบด้วยคำสั่งนี้ใน PowerShell
PS> Get-Command "C:\ServBay\bin\bison.exe" | Select-Object -ExpandProperty FileVersionInfo | Select-Object ProductName, FileDescription
1
2
2
หรือเช็คข้อมูลจาก property ของไฟล์โดยตรง
เมื่อทราบสถาปัตยกรรมแล้ว ให้เลือก environment script สำหรับการตั้งค่าที่เหมาะสม
เริ่มต้น Environment Variable สำหรับคอมไพล์
เลือก environment script ตาม OS และ CPU architecture ที่ใช้:
macOS
เปิด Terminal ใหม่ แล้ววางสคริปต์ที่ตรงกับ CPU เพื่อ set path และ flag ต่างๆ สำหรับการคอมไพล์ด้วย ServBay
bash
# กำหนดจำนวนคอร์ CPU สำหรับ parallel build
CPU_NUMBER=$(sysctl -n hw.ncpu)
# พาธต้นทางของ ServBay
SERVBAY_BASE_FULL_PATH="/Applications/ServBay"
# โฟลเดอร์แพ็กเกจ
SERVBAY_PACKAGE_DIR_NAME="package"
# พาธเต็มของแพ็กเกจ
SERVBAY_PACKAGE_FULL_PATH="${SERVBAY_BASE_FULL_PATH}/${SERVBAY_PACKAGE_DIR_NAME}"
# พาธไฟล์ไบนารี
SERVBAY_BIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/bin"
SERVBAY_SBIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/sbin"
# พาธการตั้งค่า
SERVBAY_ETC_PATH="${SERVBAY_PACKAGE_FULL_PATH}/etc"
# พาธข้อมูล
SERVBAY_VAR_PATH="${SERVBAY_PACKAGE_FULL_PATH}/var"
# ตำแหน่งติดตั้ง Development Library
SERVBAY_COMMON_PATH="${SERVBAY_PACKAGE_FULL_PATH}/common"
# พาธ header ตำแหน่ง include
SERVBAY_COMMON_INCLUDE_PATH="${SERVBAY_COMMON_PATH}/include"
# ไลบรารี
SERVBAY_COMMON_LIB_PATH="${SERVBAY_COMMON_PATH}/lib"
SERVBAY_COMMON_LIBEXEC_PATH="${SERVBAY_COMMON_PATH}/libexec"
SERVBAY_COMMON_SHARE_PATH="${SERVBAY_COMMON_PATH}/share"
SERVBAY_COMMON_MAN_PATH="${SERVBAY_COMMON_PATH}/man"
SERVBAY_COMMON_DOC_PATH="${SERVBAY_COMMON_PATH}/doc"
# โฟลเดอร์ที่กำลัง build
SERVBAY_BUILD_DIR=$(pwd)
SERVBAY_BUILD_SRC_DIR=${SERVBAY_BUILD_DIR}/src
# ข้อมูลเวอร์ชัน OpenSSL
OPENSSL_SELECTED_VERSION="3.2"
OPENSSL_VERSION="3.2.1"
# เวอร์ชันขั้นต่ำของ macOS เป้าหมาย
BUILD_OS_MIN_VERSION="12.00" # macOS Monterey ขึ้นไป
# flag สถาปัตยกรรม CPU
BUILD_CPU_ARCH="-arch arm64"
BUILD_CPU_ARCH_CMAKE="arm64"
BUILD_MACOS_TARGET="" # Arm64 ไม่ต้องใช้ -target
# CFLAGS: ระบุ optimization, macOS min, arch
export CFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# LDFLAGS: rpath, -L, macOS min, arch
export LDFLAGS="-Wl,-rpath -Wl,${SERVBAY_COMMON_LIB_PATH} -L${SERVBAY_COMMON_LIB_PATH} -L${SERVBAY_PACKAGE_FULL_PATH} -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# CPPFLAGS: -I สำหรับ header
export CPPFLAGS="-I${SERVBAY_COMMON_INCLUDE_PATH}"
# CXXFLAGS: เหมือน CFLAGS
export CXXFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# PATH: นำ ServBay bin/sbin ขึ้นมาก่อน
export PATH="${SERVBAY_BIN_PATH}:${SERVBAY_SBIN_PATH}:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin"
# pkg-config path
export PKG_CONFIG_PATH="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# pkg-config tool
export PKG_CONFIG="${SERVBAY_BIN_PATH}/pkg-config"
# pkg-config libdir
export PKG_CONFIG_LIBDIR="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# เพิ่ม path สำรองของ system & Homebrew
export PATH=$PATH:"/usr/local/bin:/usr/local/sbin"
export PATH=$PATH:"/opt/homebrew/bin/"
# เพิ่ม OpenSSL path ใน LDFLAGS และ CPPFLAGS
export LDFLAGS="-L${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib ${LDFLAGS}"
export CPPFLAGS="-I${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/include ${CPPFLAGS}"
# เพิ่ม pkg-config path ของ OpenSSL
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib/pkgconfig"
export PKG_CONFIG_LIBDIR="${PKG_CONFIG_LIBDIR}:${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib/pkgconfig"
# เมื่อ set environment variables แล้ว สามารถ build ใน terminal นี้ได้เลย
echo "ServBay Arm64 สภาพแวดล้อมคอมไพล์พร้อมใช้แล้ว"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
bash
# กำหนดจำนวนคอร์ CPU สำหรับ parallel build
CPU_NUMBER=$(sysctl -n hw.ncpu)
# ตำแหน่งติดตั้ง ServBay, แพ็กเกจ, header, lib เหมือนกับ Arm64
# ข้อมูล OpenSSL
OPENSSL_SELECTED_VERSION="1.1.1u"
OPENSSL_VERSION="1.1.1u"
# เวอร์ชันขั้นต่ำ macOS
BUILD_OS_MIN_VERSION="12.00" # macOS Monterey ขึ้นไป
# flag สถาปัตยกรรม CPU
BUILD_CPU_ARCH="-arch x86_64"
BUILD_CPU_ARCH_CMAKE="x86_64"
# Intel ต้องกำหนด -target
BUILD_MACOS_TARGET="-target x86_64-apple-macos${BUILD_OS_MIN_VERSION}"
# (ส่วนอื่นๆ เหมือนกับ Arm64)
# ...
# เมื่อ set environment variables แล้ว สามารถ build ใน terminal นี้ได้เลย
echo "ServBay x86_64 สภาพแวดล้อมคอมไพล์พร้อมใช้แล้ว"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Windows
สำหรับ Windows ให้ใช้ PowerShell หรือ Developer Command Prompt ตั้ง environment ดังนี้:
powershell
# กำหนดจำนวนคอร์ CPU สำหรับ parallel build
$CPU_NUMBER = (Get-WmiObject -Class Win32_Processor).NumberOfLogicalProcessors
# พาธติดตั้ง ServBay
$SERVBAY_BASE_FULL_PATH = "C:\ServBay"
$SERVBAY_PACKAGE_DIR_NAME = "package"
$SERVBAY_PACKAGE_FULL_PATH = "${SERVBAY_BASE_FULL_PATH}\${SERVBAY_PACKAGE_DIR_NAME}"
# ไบนารี, sbin, etc, var
$SERVBAY_BIN_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\bin"
$SERVBAY_SBIN_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\sbin"
$SERVBAY_ETC_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\etc"
$SERVBAY_VAR_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\var"
# ตำแหน่ง Dev Library ต่างๆ
$SERVBAY_COMMON_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\common"
$SERVBAY_COMMON_INCLUDE_PATH = "${SERVBAY_COMMON_PATH}\include"
$SERVBAY_COMMON_LIB_PATH = "${SERVBAY_COMMON_PATH}\lib"
$SERVBAY_COMMON_LIBEXEC_PATH = "${SERVBAY_COMMON_PATH}\libexec"
$SERVBAY_COMMON_SHARE_PATH = "${SERVBAY_COMMON_PATH}\share"
$SERVBAY_COMMON_DOC_PATH = "${SERVBAY_COMMON_PATH}\doc"
# โฟลเดอร์ build ปัจจุบัน
$SERVBAY_BUILD_DIR = Get-Location
$SERVBAY_BUILD_SRC_DIR = "${SERVBAY_BUILD_DIR}\src"
# ข้อมูล OpenSSL (Windows)
$OPENSSL_SELECTED_VERSION = "3.2"
$OPENSSL_VERSION = "3.2.1"
# เจาะจง build config
$BUILD_PLATFORM = "x64"
$BUILD_CONFIG = "Release"
# ตั้ง environment variable
$env:SERVBAY_BASE_FULL_PATH = $SERVBAY_BASE_FULL_PATH
$env:SERVBAY_COMMON_PATH = $SERVBAY_COMMON_PATH
$env:SERVBAY_COMMON_INCLUDE_PATH = $SERVBAY_COMMON_INCLUDE_PATH
$env:SERVBAY_COMMON_LIB_PATH = $SERVBAY_COMMON_LIB_PATH
# PATH: ให้เครื่องมือของ ServBay มาก่อน
$env:PATH = "${SERVBAY_BIN_PATH};${SERVBAY_SBIN_PATH};$env:PATH"
# สำหรับ include และ lib
$env:INCLUDE = "${SERVBAY_COMMON_INCLUDE_PATH};$env:INCLUDE"
$env:LIB = "${SERVBAY_COMMON_LIB_PATH};$env:LIB"
$env:LIBPATH = "${SERVBAY_COMMON_LIB_PATH};$env:LIBPATH"
# pkg-config (ถ้ามี)
$env:PKG_CONFIG_PATH = "${SERVBAY_COMMON_LIB_PATH}\pkgconfig"
# OpenSSL path
$env:INCLUDE = "${SERVBAY_COMMON_PATH}\openssl\${OPENSSL_SELECTED_VERSION}\include;$env:INCLUDE"
$env:LIB = "${SERVBAY_COMMON_PATH}\openssl\${OPENSSL_SELECTED_VERSION}\lib;$env:LIB"
# CMAKE
$env:CMAKE_PREFIX_PATH = $SERVBAY_COMMON_PATH
$env:CMAKE_INSTALL_PREFIX = $SERVBAY_COMMON_PATH
# แจ้งว่า environment พร้อมแล้ว
Write-Host "ServBay Windows x64 สภาพแวดล้อมคอมไพล์พร้อมใช้แล้ว"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
สำหรับ Developer Command Prompt สามารถใช้ batch script:
batch
@echo off
REM ตั้งค่าสภาพแวดล้อม ServBay บน Windows
REM ตำแหน่งติดตั้ง ServBay
set SERVBAY_BASE_FULL_PATH=C:\ServBay
set SERVBAY_PACKAGE_FULL_PATH=%SERVBAY_BASE_FULL_PATH%\package
REM PATH ต่างๆ
set SERVBAY_BIN_PATH=%SERVBAY_PACKAGE_FULL_PATH%\bin
set SERVBAY_COMMON_PATH=%SERVBAY_PACKAGE_FULL_PATH%\common
set SERVBAY_COMMON_INCLUDE_PATH=%SERVBAY_COMMON_PATH%\include
set SERVBAY_COMMON_LIB_PATH=%SERVBAY_COMMON_PATH%\lib
REM เวอร์ชัน OpenSSL
set OPENSSL_SELECTED_VERSION=3.2
REM Environment variables
set PATH=%SERVBAY_BIN_PATH%;%PATH%
set INCLUDE=%SERVBAY_COMMON_INCLUDE_PATH%;%SERVBAY_COMMON_PATH%\openssl\%OPENSSL_SELECTED_VERSION%\include;%INCLUDE%
set LIB=%SERVBAY_COMMON_LIB_PATH%;%SERVBAY_COMMON_PATH%\openssl\%OPENSSL_SELECTED_VERSION%\lib;%LIB%
set CMAKE_PREFIX_PATH=%SERVBAY_COMMON_PATH%
echo ServBay Windows สภาพแวดล้อมคอมไพล์พร้อมใช้แล้ว
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
หมายเหตุ: environment variable ที่ตั้งจะมีผลเฉพาะใน session ปัจจุบัน ถ้าเปิด terminal ใหม่ ต้อง run สคริปต์ใหม่ทุกครั้ง
ตัวอย่างการคอมไพล์
เมื่อเซ็ตสภาพแวดล้อมแล้ว สามารถดาวน์โหลด source และคอมไพล์โปรเจ็กต์ต่างๆ ตามตัวอย่างด้านล่าง
คอมไพล์ ImageMagick
ImageMagick เป็นไลบรารีจัดการภาพที่ PHP imagick
ใช้เป็น dependency ServBay ได้ติดตั้งไว้โดยส่วนใหญ่แล้ว ตัวอย่างนี้เพื่อสาธิตขั้นตอนการคอมไพล์ใน ServBay Environment
macOS / Linux
ดาวน์โหลด source code และแตกไฟล์:
bash# เปลี่ยนเลขเวอร์ชันเป็นเวอร์ชันล่าสุดตามต้องการ wget https://imagemagick.org/archive/releases/ImageMagick-7.1.1-33.tar.gz tar zxvf ImageMagick-7.1.1-33.tar.gz cd ImageMagick-7.1.1-33
1
2
3
4รันสคริปต์
./configure
: ใช้ environment variable ที่ตั้งไว้ รัน configure พร้อม option--prefix
,--libdir
,--includedir
ให้ชี้ไปที่ ServBay Development Library ของคุณ เพื่อให้ไลบรารีและ header สามารถให้โปรแกรมอื่นๆใน ServBay (เช่น PHP imagick) ใช้งานต่อได้ ตั้งค่าตัวเลือกอื่นๆ สำหรับการคอมไพล์bash./configure \ --prefix=${SERVBAY_COMMON_PATH} \ --libdir=${SERVBAY_COMMON_LIB_PATH} \ --includedir=${SERVBAY_COMMON_INCLUDE_PATH} \ --oldincludedir=${SERVBAY_COMMON_INCLUDE_PATH} \ --bindir=${SERVBAY_BIN_PATH} \ --sbindir=${SERVBAY_SBIN_PATH} \ --sysconfdir=${SERVBAY_ETC_PATH} \ --datarootdir=${SERVBAY_COMMON_SHARE_PATH} \ --enable-osx-universal-binary=no \ --disable-silent-rules \ --disable-opencl \ --enable-shared \ --enable-static \ --with-freetype=yes \ --with-gvc=no \ --with-modules \ --with-webp=yes \ --with-heic=no \ --without-gslib \ --with-fpx=no \ --without-openexexr \ --with-raw=yes \ --without-lqr \ --without-djvu \ --without-fftw \ --without-pango \ --without-wmf \ --without-x \ --with-gs-font-dir=${SERVBAY_COMMON_SHARE_PATH}/ghostscript/10.02.1/Resource/Font
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30รัน
make
และmake install
: ใช้make
สำหรับคอมไพล์ และใช้-j ${CPU_NUMBER}
build แบบ multi-core ต่อด้วยmake install
สำหรับติดตั้งไปยังพาธที่กำหนดbashmake -j ${CPU_NUMBER} make install
1
2
Windows
สำหรับ Windows แนะนำให้ใช้ CMake ในการคอมไพล์ ImageMagick ดังนี้:
ดาวน์โหลด source code:
powershell# ใช้ curl หรือดาวน์โหลดผ่านเบราว์เซอร์ curl -O https://imagemagick.org/archive/releases/ImageMagick-7.1.1-33.tar.gz # แตกไฟล์ (ต้องติดตั้ง 7zip หรือเครื่องมือคล้ายกัน) tar -xzf ImageMagick-7.1.1-33.tar.gz cd ImageMagick-7.1.1-33
1
2
3
4
5ใช้ CMake ตั้งค่า (ใน Developer Command Prompt หรือ PowerShell):
powershell# สร้างโฟลเดอร์สำหรับ build mkdir builddir cd builddir # รัน CMake ตั้งค่าโปรเจ็กต์ cmake .. ` -DCMAKE_INSTALL_PREFIX="$env:SERVBAY_COMMON_PATH" ` -DCMAKE_BUILD_TYPE=Release ` -DBUILD_SHARED_LIBS=ON ` -DMAGICKCORE_QUANTUM_DEPTH=16 ` -DMAGICKCORE_HDRI_ENABLE=OFF ` -DWITH_BZLIB=ON ` -DWITH_ZLIB=ON ` -DWITH_PNG=ON ` -DWITH_JPEG=ON ` -DWITH_TIFF=ON ` -DWITH_FREETYPE=ON ` -DWITH_WEBP=ON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18คอมไพล์และติดตั้ง:
powershell# คอมไพล์ cmake --build . --config Release --parallel $CPU_NUMBER # ติดตั้ง cmake --install . --config Release
1
2
3
4
การคอมไพล์ซอฟต์แวร์ที่ใช้ cmake
สำหรับซอฟต์แวร์ที่สร้างด้วย cmake กระบวนการคอมไพล์ในแต่ละแพลตฟอร์มคล้ายกัน ตัวอย่างนี้ใช้ protobuf
(Protocol Buffers)
- ดาวน์โหลด source ของ protobuf และ cd เข้าไป
macOS / Linux
ใช้ cmake ตั้งค่าการคอมไพล์:
-S .
กำหนดโฟลเดอร์ source-B builddir
กำหนดโฟลเดอร์ build- ตำแหน่งที่ติดตั้งและ options ต่างๆ เหมือนกับ Autotools (เช่น
--prefix
) -DCMAKE_MACOSX_RPATH=1
,-DCMAKE_INSTALL_RPATH
เพื่อให้ไลบรารีที่คอมไพล์หา dep ใน ServBay เจอ
bashcmake -S . -B builddir \ -DCMAKE_INSTALL_PREFIX=${SERVBAY_COMMON_PATH} \ -DCMAKE_INSTALL_LIBDIR=${SERVBAY_COMMON_LIB_PATH} \ -DCMAKE_INSTALL_INCLUDEDIR=${SERVBAY_COMMON_INCLUDE_PATH} \ -DCMAKE_INSTALL_BINDIR=${SERVBAY_BIN_PATH} \ -DCMAKE_INSTALL_SBINDIR=${SERVBAY_SBIN_PATH} \ -DCMAKE_INSTALL_SYSCONFDIR=${SERVBAY_ETC_PATH} \ -DCMAKE_INSTALL_DATAROOTDIR=${SERVBAY_COMMON_SHARE_PATH} \ -DCMAKE_MACOSX_RPATH=1 \ -DCMAKE_INSTALL_RPATH=${SERVBAY_COMMON_LIB_PATH} \ -DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE \ -DCMAKE_PREFIX_PATH=${SERVBAY_COMMON_PATH} \ -DBUILD_SHARED_LIBS=ON \ -Dprotobuf_BUILD_LIBPROTOC=ON \ -Dprotobuf_BUILD_SHARED_LIBS=ON \ -Dprotobuf_INSTALL_EXAMPLES=OFF \ -Dprotobuf_BUILD_TESTS=OFF \ -Dprotobuf_ABSL_PROVIDER=package \ -Dprotobuf_JSONCPP_PROVIDER=module \ -DCMAKE_CXX_STANDARD=17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20รัน
cmake --build
และcmake --install
:cmake --build builddir
คอมไพล์ในโฟลเดอร์ buildcmake --install builddir
ติดตั้งผลลัพธ์ไปยัง prefix
bashcmake --build builddir -j ${CPU_NUMBER} cmake --install builddir
1
2
Windows
ใช้ cmake ตั้งค่าการคอมไพล์ (ผ่าน PowerShell หรือ Developer Command Prompt):
powershellcmake -S . -B builddir ` -DCMAKE_INSTALL_PREFIX="$env:SERVBAY_COMMON_PATH" ` -DCMAKE_BUILD_TYPE=Release ` -DCMAKE_PREFIX_PATH="$env:SERVBAY_COMMON_PATH" ` -DBUILD_SHARED_LIBS=ON ` -Dprotobuf_BUILD_LIBPROTOC=ON ` -Dprotobuf_BUILD_SHARED_LIBS=ON ` -Dprotobuf_INSTALL_EXAMPLES=OFF ` -Dprotobuf_BUILD_TESTS=OFF ` -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ` -DCMAKE_CXX_STANDARD=17
1
2
3
4
5
6
7
8
9
10
11คอมไพล์และติดตั้ง:
powershell# คอมไพล์ cmake --build builddir --config Release --parallel $CPU_NUMBER # ติดตั้ง cmake --install builddir --config Release
1
2
3
4
คอมไพล์โมดูล PHP
หากคุณต้องการ build ส่วนเสริมสำหรับ PHP (เช่น swoole
, redis
, mongodb
ฯลฯ) กรุณาดูเอกสารโดยเฉพาะ:
คอมไพล์โมดูล PostgreSQL
สำหรับโมดูลเพิ่มของ PostgreSQL โปรดดูเอกสารโดยเฉพาะ:
สรุป
ด้วย ServBay Development Library และการตั้งค่าสภาพแวดล้อมที่เหมาะสม นักพัฒนาสามารถปรับแต่งและคอมไพล์ซอฟต์แวร์บนทั้ง macOS และ Windows ได้อย่างอิสระ ตอบโจทย์ความต้องการหรือเพื่ออัปเดตไลบรารีสำหรับโครงการของตน
ประเด็นสำคัญ
- สนับสนุนหลายแพลตฟอร์ม: ServBay รองรับ macOS และ Windows
- ความแตกต่างด้านพาธ: ตำแหน่งติดตั้งแตกต่างกัน (macOS:
/Applications/ServBay
/ Windows:C:\ServBay
) - ความแตกต่างด้านเครื่องมือ: macOS ใช้ Xcode Command Line Tools / Windows ใช้ Visual Studio Build Tools
- การตั้งค่าสภาพแวดล้อม: เลือก environment script ตามแพลตฟอร์มที่ใช้
หมายเหตุ
- โปรดศึกษาคู่มือการคอมไพล์ของซอฟต์แวร์แต่ละตัวให้ละเอียดก่อน
- ปรับขั้นตอนให้สอดคล้องกับข้อจำกัดและคุณสมบัติของแต่ละแพลตฟอร์ม
- บน Windows แนะนำให้ใช้ CMake เป็นหลักสำหรับ build
- ซอฟต์แวร์บางตัวอาจมี dependency หรือวิธีการคอมไพล์ที่ไม่เหมือนกันในแต่ละแพลตฟอร์ม
ถ้าทำตามขั้นตอนในเอกสารนี้ จะสามารถคอมไพล์แพ็กเกจใน ServBay ได้สำเร็จทั้งบน Mac และ Windows