Tool Come utilizzare CMake per la generazione dei makefile sulle source di Metin2

Stato
Discussione chiusa ad ulteriori risposte.

Arves100

Utente Emerald
15 Febbraio 2011
515
46
378
418
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)
Codice:
automake
./configure
make install
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
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
Muoviamoci nella cartella della nostra source e digitiamo
Codice:
mkdir build
cd build
Questo comando creerà la nostra cartella dove verrà eseguita la generazione dei core e ci porterà dentro essa
Codice:
cmake -DEXTERN_PATH=<la nostra cartella Extern dove troviamo include e lib> ../
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)
Codice:
export CC=<cartella completa dove risiede il compilatore di file C>
export CXX=<cartella completa dove risiede il compilatore di file C++>
esempio:
Codice:
export CC=/usr/bin/gcc-6
export CXX=/usr/bin/g++-6
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.
 
Stato
Discussione chiusa ad ulteriori risposte.