Ultima modifica da un moderatore:
Oggi vorrei illustrare (a quelle poche persone che interessa) come utilizzare CMake per la generazione dei makefile sulle source di Metin2
Cos'è CMake?
CMake è un programma open-source e cross-platform creato per rimpiazzare Automake nella generazione dei file.
Automake in parole povere genera un file di configurazione (configure) che richiamato dall'utente genera il Makefile (che utilizzamo per esempio per compilare il game sui core di Metin2).
I comandi per installare una libreria sono i seguenti (con automake)
CMake genera direttamente il Makefile senza dover chiamare un file di configurazione esterna e riesce a generare anche progetti per Windows (cosa che automake non può fare) e i comandi per generare una libreria
Come funziona?
CMake utilizza un file chiamato CMakeLists.txt per leggere le informazioni del proprio progetto (se opportuno richiama anche i CMakeLists di sotto progetti) e generare di conseguenza i nostri file.
Applicando questo discorso alle Source di Metin2 possiamo generare, senza troppi problemi, un Makefile che sia compatibile con Ubuntu utilizzando il compilatore Clang 3.8 oppure una soluzione per Visual Studio 2012 e possiamo dimenticarci di aggiustare ogni volta i nostri Makefile in base alla piattaforma o al compilatore.
Come implementarlo?
Molto semplicemente vi basterà mettere questi file nella vostra Source Server.
Come modificarlo?
Se vogliamo aggiungere o togliere file dai nostri progetti ci basterà aprire il CMakeLists.txt del progetto che vogliamo modificare (esempio game) e modificare la lista PROJECT_SOURCES
Se vogliamo modificare le libreria che vengono generate al linking del nostro progetto ci basterà modificare la parte CMAKE_EXE_LINKER_FLAGS dai nostri progetti game o db
Per modificare i parametri principale che verranno passati a tutti i nostri progetti basterà aprire il CMakeLists nella root del nostro Server
Come costruire una source per CMake?
Se non possedete CMake potete scaricarlo da qui per Windows oppure dare questo comando su FreeBSD:
Muoviamoci nella cartella della nostra source e digitiamo
Questo comando creerà la nostra cartella dove verrà eseguita la generazione dei core e ci porterà dentro essa
Con questo comando indichiamo a CMake di voler generare i file nella nostra cartella "build" prendendo di mira il progetto contenuto nella cartella "../" ovvero il nostro Server.
Cmake utilizza di default i compilatori nativi presenti sulla nostra macchina (come il comando gcc) su FreeBSD 11 il compilatore predefinito è c++ , se vogliamo utilizzare un compilatore particolare e non possediamo cmake-gui possiamo dare questi 2 comandi (su una shell Bash)
esempio:
E dopo dare il comando cmake come prima.
Per avviare un interfaccia grafica in terminale (come si usava nel DOS) possiamo utilizzare il comando ccmake con la stessa sintassi che utilizziamo per cmake
Per finire vorrei avvisare che i file CMake non includono il qc e sono stati creati per la source di Vanilla r70k, con le opportune modifiche potete farli funzionare pure con le vostre source.
Il link lo trovate qui
Se utilizzare liblua 5.0 allora dovete utilizzare questo file e non quello presente nel link sopra.
Cos'è CMake?
CMake è un programma open-source e cross-platform creato per rimpiazzare Automake nella generazione dei file.
Automake in parole povere genera un file di configurazione (configure) che richiamato dall'utente genera il Makefile (che utilizzamo per esempio per compilare il game sui core di Metin2).
I comandi per installare una libreria sono i seguenti (con automake)
Codice:
automake
./configure
make install
Codice:
mkdir out
cd out
cmake ../
make install
Come funziona?
CMake utilizza un file chiamato CMakeLists.txt per leggere le informazioni del proprio progetto (se opportuno richiama anche i CMakeLists di sotto progetti) e generare di conseguenza i nostri file.
Applicando questo discorso alle Source di Metin2 possiamo generare, senza troppi problemi, un Makefile che sia compatibile con Ubuntu utilizzando il compilatore Clang 3.8 oppure una soluzione per Visual Studio 2012 e possiamo dimenticarci di aggiustare ogni volta i nostri Makefile in base alla piattaforma o al compilatore.
Come implementarlo?
Molto semplicemente vi basterà mettere questi file nella vostra Source Server.
Come modificarlo?
Se vogliamo aggiungere o togliere file dai nostri progetti ci basterà aprire il CMakeLists.txt del progetto che vogliamo modificare (esempio game) e modificare la lista PROJECT_SOURCES
Se vogliamo modificare le libreria che vengono generate al linking del nostro progetto ci basterà modificare la parte CMAKE_EXE_LINKER_FLAGS dai nostri progetti game o db
Per modificare i parametri principale che verranno passati a tutti i nostri progetti basterà aprire il CMakeLists nella root del nostro Server
Come costruire una source per CMake?
Se non possedete CMake potete scaricarlo da qui per Windows oppure dare questo comando su FreeBSD:
Codice:
pkg install cmake
Codice:
mkdir build
cd build
Codice:
cmake -DEXTERN_PATH=<la nostra cartella Extern dove troviamo include e lib> ../
Cmake utilizza di default i compilatori nativi presenti sulla nostra macchina (come il comando gcc) su FreeBSD 11 il compilatore predefinito è c++ , se vogliamo utilizzare un compilatore particolare e non possediamo cmake-gui possiamo dare questi 2 comandi (su una shell Bash)
Codice:
export CC=<cartella completa dove risiede il compilatore di file C>
export CXX=<cartella completa dove risiede il compilatore di file C++>
Codice:
export CC=/usr/bin/gcc-6
export CXX=/usr/bin/g++-6
Per avviare un interfaccia grafica in terminale (come si usava nel DOS) possiamo utilizzare il comando ccmake con la stessa sintassi che utilizziamo per cmake
Per finire vorrei avvisare che i file CMake non includono il qc e sono stati creati per la source di Vanilla r70k, con le opportune modifiche potete farli funzionare pure con le vostre source.
Il link lo trovate qui
Se utilizzare liblua 5.0 allora dovete utilizzare questo file e non quello presente nel link sopra.