Hercompilatie met ServBay
ServBay biedt macOS- en Windows-gebruikers een krachtig en compleet lokaal webontwikkelingsplatform, inclusief een grote verzameling pakketten en tools. Naast de standaard meegeleverde pakketversies van ServBay, kan het voorkomen dat ontwikkelaars pakketten willen hercompileren om aan specifieke eisen te voldoen, bijvoorbeeld:
- Het activeren van bepaalde compileropties voor een pakket.
- Toevoegen van modules of extensies die standaard niet zijn inbegrepen bij ServBay (zoals nieuwe PHP-extensies of een aanvullende PostgreSQL-module).
- Compilatie met een alternatieve versie van een bibliotheek die verschilt van wat ServBay standaard aanbiedt.
- Maken van maatwerk aanpassingen op de door ServBay geleverde pakketten.
ServBay bevat alle benodigde tools en buildomgevingen om gebruikers deze compilatietaken eenvoudig te laten uitvoeren.
Om pakketten succesvol te hercompileren, is het raadzaam dat gebruikers basiskennis hebben van het compilatieproces van hun besturingssystemen:
- macOS/Linux: Tools als
configure,make,make install(Unix/Linux buildtoolchain) - Windows: Visual Studio buildsystemen, MSBuild, cmake en vergelijkbare tools
Benodigdheden
Controleer vóór het hercompileren of je beschikt over het volgende:
Installeer ServBay Development Library: Dit is de essentiële verzameling voor hercompilatie en bevat alle libraries, header-bestanden en resources die je binnen ServBay nodig hebt voor het bouwen. Je vindt en installeert deze via het Pakketten-paneel in de ServBay-app.

Installeer ontwikkeltools:
macOS
Installeer Xcode Command Line Tools: Dit is het essentiële gereedschapspakket dat Apple aanbiedt voor macOS, inclusief compiler (Clang), linker en andere core tools. Open Terminal en voer het volgende uit om te installeren:
bashxcode-select --install1Wanneer reeds geïnstalleerd zal het systeem dit aangeven.
Extra buildtools installeren: Voor de meeste opensourceprojecten heb je vaak ook
autoconf,automake,libtoolen meer nodig. Installeer deze eenvoudig met Homebrew:bashbrew install autoconf automake libtool cmake1Heb je Homebrew nog niet geïnstalleerd? Zie de instructies op de officiële Homebrew-site.
Windows
Installeer Visual Studio Build Tools of Visual Studio Community: Je hebt Microsoft Visual C++ compiler en buildtools nodig, via één van onderstaande mogelijkheden:
Optie 1: Visual Studio Build Tools (aanbevolen, kleinere installatie)
- Download en installeer Visual Studio Build Tools
- Kies tenslotte het “C++ build tools” werkpakket
- Zorg dat deze onderdelen zijn geselecteerd:
- MSVC v143 - VS 2022 C++ x64/x86 buildtools
- Windows 11 SDK (laatste versie)
- CMake tools
Optie 2: Visual Studio Community
- Download en installeer Visual Studio Community
- Selecteer "Desktopontwikkeling met C++" als workload
- Zorg dat CMake tools en Windows SDK zijn inbegrepen
Extra tools installeren: Je hebt soms ook nodig:
- Git for Windows: voor het ophalen van broncode
- MSYS2 of vcpkg: voor het beheren van C/C++ library dependencies
- Python: sommige buildscripts vereisen Python
powershell# Optioneel: Installeer extra tools met chocolatey choco install git cmake python msys21
2
Buildomgeving instellen
Na installatie van ServBay Development Library en de genoemde tools, is het belangrijk de buildomgeving goed te initialiseren. Het opzetten van omgevingsvariabelen zorgt ervoor dat de compiler en het buildsystem weten waar ServBay haar libraries, headers en binaries bewaart — essentieel voor correcte afhankelijkheden en het linken.
De exacte settings kunnen variëren afhankelijk van besturingssysteem en architectuur:
macOS
ServBay kent voor Mac-computers afzonderlijke runtime-omgevingen voor Intel-chips (x86_64) en Apple Silicon-chips (Arm64). Kies het juiste initialisatiecommando voor de ServBay runtime-architectuur van jouw Mac.
Windows
De Windows-versie van ServBay ondersteunt x64-architectuur, en wordt geïnstalleerd in de map C:\ServBay.
CPU-architectuur van ServBay Runtime controleren
macOS
Controleer de architectuur van een willekeurig executable in de ServBay bin-map, bijvoorbeeld bison:
bash
# Voer het onderstaande commando uit in Terminal
$ file /Applications/ServBay/bin/bison
/Applications/ServBay/bin/bison: Mach-O 64-bit executable arm641
2
3
2
3
bash
# Voer het onderstaande commando uit in Terminal
$ file /Applications/ServBay/bin/bison
/Applications/ServBay/bin/bison: Mach-O 64-bit executable x86_641
2
3
2
3
Windows
De Windows-versie van ServBay werkt momenteel alleen op x64. Controleer een executable in PowerShell:
powershell
# Voer het onderstaande commando uit in PowerShell
PS> Get-Command "C:\ServBay\bin\bison.exe" | Select-Object -ExpandProperty FileVersionInfo | Select-Object ProductName, FileDescription1
2
2
Of bekijk de bestandseigenschappen om de architectuur te bevestigen.
Kies vervolgens het juiste initialisatiescript op basis van je bevindingen.
Build-omgevingsvariabelen initialiseren
Afhankelijk van je OS en architectuur: voer het bijbehorende initialisatiescript uit.
macOS
Open een nieuwe Terminal en plak het juiste script voor jouw CPU-architectuur: deze stelt de ServBay-buildomgeving in, inclusief paden en flags.
bash
# Stel het aantal CPU-cores in voor parallelle build
CPU_NUMBER=$(sysctl -n hw.ncpu)
# ServBay installatielocatie
SERVBAY_BASE_FULL_PATH="/Applications/ServBay"
# Naam van de package directory
SERVBAY_PACKAGE_DIR_NAME="package"
# Volledig pad naar package
SERVBAY_PACKAGE_FULL_PATH="${SERVBAY_BASE_FULL_PATH}/${SERVBAY_PACKAGE_DIR_NAME}"
# Paden naar binaries
SERVBAY_BIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/bin"
SERVBAY_SBIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/sbin"
# Pad naar config-bestanden
SERVBAY_ETC_PATH="${SERVBAY_PACKAGE_FULL_PATH}/etc"
# Data directory
SERVBAY_VAR_PATH="${SERVBAY_PACKAGE_FULL_PATH}/var"
# Installatiepad van Development Library
SERVBAY_COMMON_PATH="${SERVBAY_PACKAGE_FULL_PATH}/common"
# Paden naar headers, libraries, etc.
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"
# Builddirectories
SERVBAY_BUILD_DIR=$(pwd)
SERVBAY_BUILD_SRC_DIR=${SERVBAY_BUILD_DIR}/src
# Versie-info van OpenSSL
OPENSSL_SELECTED_VERSION="3.2"
OPENSSL_VERSION="3.2.1"
# Minimale OS-versie
BUILD_OS_MIN_VERSION="12.00" # macOS Monterey of later
# CPU-architectuur
BUILD_CPU_ARCH="-arch arm64"
BUILD_CPU_ARCH_CMAKE="arm64"
BUILD_MACOS_TARGET="" # Meestal niet nodig voor Arm64
# Compilerflags; optimalisatie, arch, versies
export CFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
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}"
export CPPFLAGS="-I${SERVBAY_COMMON_INCLUDE_PATH}"
export CXXFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# Prioriteit voor ServBay bin/sbin
export PATH="${SERVBAY_BIN_PATH}:${SERVBAY_SBIN_PATH}:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin"
# pkg-config
export PKG_CONFIG_PATH="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
export PKG_CONFIG="${SERVBAY_BIN_PATH}/pkg-config"
export PKG_CONFIG_LIBDIR="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# Toevoegen van Homebrew/bin als fallback
export PATH=$PATH:"/usr/local/bin:/usr/local/sbin"
export PATH=$PATH:"/opt/homebrew/bin/"
# OpenSSL libraries/headers toevoegen
export LDFLAGS="-L${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib ${LDFLAGS}"
export CPPFLAGS="-I${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/include ${CPPFLAGS}"
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"
# Je omgeving is nu klaar voor het builden
echo "ServBay Arm64 buildomgeving ingesteld."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
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
bash
# Stel het aantal CPU-cores in voor parallelle build
CPU_NUMBER=$(sysctl -n hw.ncpu)
# ServBay installatielocatie
SERVBAY_BASE_FULL_PATH="/Applications/ServBay"
# Naam van de package directory
SERVBAY_PACKAGE_DIR_NAME="package"
# Volledig pad naar package
SERVBAY_PACKAGE_FULL_PATH="${SERVBAY_BASE_FULL_PATH}/${SERVBAY_PACKAGE_DIR_NAME}"
# Paden naar binaries
SERVBAY_BIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/bin"
SERVBAY_SBIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/sbin"
# Pad naar config-bestanden
SERVBAY_ETC_PATH="${SERVBAY_PACKAGE_FULL_PATH}/etc"
# Data directory
SERVBAY_VAR_PATH="${SERVBAY_PACKAGE_FULL_PATH}/var"
# Installatiepad van Development Library
SERVBAY_COMMON_PATH="${SERVBAY_PACKAGE_FULL_PATH}/common"
# Paden naar headers, libraries, etc.
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"
# Builddirectories
SERVBAY_BUILD_DIR=$(pwd)
SERVBAY_BUILD_SRC_DIR=${SERVBAY_BUILD_DIR}/src
# Versie-info van OpenSSL
OPENSSL_SELECTED_VERSION="1.1.1u"
OPENSSL_VERSION="1.1.1u"
# Minimale OS-versie
BUILD_OS_MIN_VERSION="12.00" # macOS Monterey of later
# CPU-architectuur
BUILD_CPU_ARCH="-arch x86_64"
BUILD_CPU_ARCH_CMAKE="x86_64"
# Target voor Intel
BUILD_MACOS_TARGET="-target x86_64-apple-macos${BUILD_OS_MIN_VERSION}"
# Compilerflags; optimalisatie, arch, versies
export CFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
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}"
export CPPFLAGS="-I${SERVBAY_COMMON_INCLUDE_PATH}"
export CXXFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
export PATH="${SERVBAY_BIN_PATH}:${SERVBAY_SBIN_PATH}:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin"
export PKG_CONFIG_PATH="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
export PKG_CONFIG="${SERVBAY_BIN_PATH}/pkg-config"
export PKG_CONFIG_LIBDIR="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
export PATH=$PATH:"/usr/local/bin:/usr/local/sbin"
export PATH=$PATH:"/opt/homebrew/bin/"
# OpenSSL libraries/headers toevoegen
export LDFLAGS="-L${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib ${LDFLAGS}"
export CPPFLAGS="-I${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/include ${CPPFLAGS}"
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"
# Je omgeving is nu klaar voor het builden
echo "ServBay x86_64 buildomgeving ingesteld."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
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
Windows
Op Windows stel je variabelen in via PowerShell of de Developer Command Prompt. Onderstaand script is geschikt voor Windows x64:
powershell
# Stel het aantal CPU-cores in voor parallelle build
$CPU_NUMBER = (Get-WmiObject -Class Win32_Processor).NumberOfLogicalProcessors
# ServBay installatielocatie (Windows)
$SERVBAY_BASE_FULL_PATH = "C:\ServBay"
$SERVBAY_PACKAGE_DIR_NAME = "package"
$SERVBAY_PACKAGE_FULL_PATH = "${SERVBAY_BASE_FULL_PATH}\${SERVBAY_PACKAGE_DIR_NAME}"
# Paden naar binaries
$SERVBAY_BIN_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\bin"
$SERVBAY_SBIN_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\sbin"
# Config- en datadirectories
$SERVBAY_ETC_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\etc"
$SERVBAY_VAR_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\var"
# Development Library installatielocatie
$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"
# Builddirectories
$SERVBAY_BUILD_DIR = Get-Location
$SERVBAY_BUILD_SRC_DIR = "${SERVBAY_BUILD_DIR}\src"
# OpenSSL versie (Windows)
$OPENSSL_SELECTED_VERSION = "3.2"
$OPENSSL_VERSION = "3.2.1"
# Windows build settings
$BUILD_PLATFORM = "x64"
$BUILD_CONFIG = "Release"
# Omgevingsvariabelen
$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 setup met prioriteit voor ServBay
$env:PATH = "${SERVBAY_BIN_PATH};${SERVBAY_SBIN_PATH};$env:PATH"
# Compiler relevante variabelen
$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 setup (indien beschikbaar)
$env:PKG_CONFIG_PATH = "${SERVBAY_COMMON_LIB_PATH}\pkgconfig"
# OpenSSL headers/libraries toevoegen
$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 gerelateerde variabelen
$env:CMAKE_PREFIX_PATH = $SERVBAY_COMMON_PATH
$env:CMAKE_INSTALL_PREFIX = $SERVBAY_COMMON_PATH
# Omgeving ingesteld
Write-Host "ServBay Windows x64 buildomgeving ingesteld."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
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
Voor de Developer Command Prompt kun je ook een batch-script gebruiken:
batch
@echo off
REM Stelt ServBay Windows buildomgeving in
REM Installeerlocatie
set SERVBAY_BASE_FULL_PATH=C:\ServBay
set SERVBAY_PACKAGE_FULL_PATH=%SERVBAY_BASE_FULL_PATH%\package
REM Paden instellen
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 versie
set OPENSSL_SELECTED_VERSION=3.2
REM Omgevingsvariabelen
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 buildomgeving ingesteld.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
Belangrijk: De omgevingsvariabelen gelden alleen binnen de huidige terminalsessie. Sluit je de terminal of open je een nieuwe, dan moet je het script opnieuw uitvoeren om de buildomgeving te (her)initialiseren.
Voorbeelden van compilatie
Na het instellen kun je pakketten downloaden en compileren. Hier volgen enkele veelvoorkomende cross-platform voorbeelden.
ImageMagick compileren
ImageMagick is een krachtige afbeeldingsbibliotheek en is een veelgebruikte dependency van de PHP-extensie imagick. ServBay bevat standaard ImageMagick, dus voor praktisch gebruik is de compilatie meestal niet nodig — het voorbeeld hieronder laat enkel zien hoe je een project compileert binnen ServBay.
macOS / Linux
Download en pak de ImageMagick-broncode uit:
bash# Vervang het versienummer indien nodig 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-331
2
3
4Voer het
./configurescript uit: Gebruik de eerder ingestelde variabelen en wijs via--prefix,--libdiren--includedirde installatiepaden toe aan de ServBay Development Library directories. Zo zijn de libraries en headers vindbaar voor andere software binnen ServBay (zoals PHP'simagickextensie). Andere opties zijn specifiek voor ImageMagick's configuratie.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/Font1
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
30Voer
makeenmake installuit: Metmakewordt de code gecompileerd; gebruik-j ${CPU_NUMBER}om te profiteren van alle CPU-cores. Metmake installworden de binaries geïnstalleerd in de Library-directory zoals aangegeven door--prefix.bashmake -j ${CPU_NUMBER} make install1
2
Windows
Op Windows compileer je ImageMagick meestal via Visual Studio of CMake. Omdat de ImageMagick-build relatief complex is op Windows, wordt CMake aanbevolen:
Download de broncode:
powershell# Gebruik curl of browser om te downloaden curl -O https://imagemagick.org/archive/releases/ImageMagick-7.1.1-33.tar.gz # Uitpakken (7zip of gelijkaardig nodig) tar -xzf ImageMagick-7.1.1-33.tar.gz cd ImageMagick-7.1.1-331
2
3
4
5Configureer met CMake (in Developer Command Prompt of PowerShell):
powershell# Maak build directory mkdir builddir cd builddir # Configureer het project 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=ON1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18Build en installeer:
powershell# Bouwen cmake --build . --config Release --parallel $CPU_NUMBER # Installatie cmake --install . --config Release1
2
3
4
Pakket compileren met cmake
Voor pakketten die met het cmake-buildsysteem werken is het proces vrij uniform op verschillende platformen. Hieronder is het voorbeeld van protobuf (Protocol Buffers).
- Download de protobuf-broncode en ga naar de directory.
macOS / Linux
Configureer het project met
cmake: Met-S .duid je de bronmap aan en met-B builddirde buildmap. Met-DCMAKE_INSTALL_PREFIXetc. wijs je de installatiepaden toe aan de ServBay Development Library. Overige-D-opties zijn protobuf-specifiek.-DCMAKE_MACOSX_RPATH=1en-DCMAKE_INSTALL_RPATHzorgen voor correcte zoekpaden naar ServBay-libraries.bash# Vanuit de protobuf bronmap cmake -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=171
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Voer
cmake --buildencmake --installuit: Hiermee maak je in de buildmap en installeer je in de gekozen ServBay Library-directory.bashcmake --build builddir -j ${CPU_NUMBER} cmake --install builddir1
2
Windows
Configureer het project in PowerShell of Developer Command Prompt:
powershell# Vanuit de protobuf bronmap cmake -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=171
2
3
4
5
6
7
8
9
10
11
12Build en installeer:
powershell# Builden cmake --build builddir --config Release --parallel $CPU_NUMBER # Installeren cmake --install builddir --config Release1
2
3
4
PHP-modules compileren
Wil je extra PHP-extensies compileren voor een ServBay PHP-versie (zoals swoole, redis, mongodb etc.), raadpleeg dan de specifieke instructies:
PostgreSQL-modules compileren
Wil je extra modules compileren voor PostgreSQL binnen ServBay, raadpleeg dan:
Samenvatting
Met de ServBay Development Library en volledige set aan omgevingsvariabelen kunnen ontwikkelaars op macOS en Windows eenvoudig pakketten hercompileren en aanpassen aan hun behoeften. Je bent flexibel en beschikt altijd over de modernste libraries passend bij jouw project.
Belangrijkste punten
- Crossplatform-ondersteuning: ServBay biedt buildomgevingen voor zowel macOS als Windows
- Padverschillen: Let op de installatiepaden per platform (macOS:
/Applications/ServBay, Windows:C:\ServBay) - Buildtoolchain-verschillen: macOS gebruikt Xcode Command Line Tools; Windows gebruikt Visual Studio Build Tools
- Omgevingsconfiguratie: Gebruik altijd het juiste initialisatiescript voor jouw platform
Extra aandachtspunten
- Lees altijd zorgvuldig de officiële instructies van elk pakket vóór het compileren
- Optimaliseer de configuratie en buildstappen voor jouw besturingssysteem
- Op Windows is compileren met CMake sterk aanbevolen
- Opensourceprojecten kunnen per platform verschillende vereisten of dependencies hebben
Volg je deze handleiding, dan ben je verzekerd van een succesvolle build-omgeving voor het compileren van pakketten in ServBay, zowel op macOS als Windows.
