Commit fcb8c30d authored by guillaume's avatar guillaume

clean MakeFile

parent d93984d2
...@@ -7,3 +7,4 @@ raylib ...@@ -7,3 +7,4 @@ raylib
nw-* nw-*
config config
*.o
\ No newline at end of file
...@@ -2,7 +2,7 @@ project(networld LANGUAGES C) ...@@ -2,7 +2,7 @@ project(networld LANGUAGES C)
cmake_minimum_required(VERSION 3.10) cmake_minimum_required(VERSION 3.10)
# Activate C99 standard: # Activate C99 standard:
SET(CMAKE_C_FLAGS "-g -std=c99 -Wall -Wextra" ) SET(CMAKE_C_FLAGS "-std=c99 -Wall -Wextra" )
# project configuration : # project configuration :
include_directories(${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/src) include_directories(${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/src)
...@@ -21,5 +21,3 @@ target_link_libraries(nw-viewer raylib) ...@@ -21,5 +21,3 @@ target_link_libraries(nw-viewer raylib)
#include_directories(${PROJECT_SOURCE_DIR}/raylib/src) #include_directories(${PROJECT_SOURCE_DIR}/raylib/src)
#link_directories(${PROJECT_SOURCE_DIR}/raylib) #link_directories(${PROJECT_SOURCE_DIR}/raylib)
#target_link_libraries(nw-viewer raylib GL m pthread dl rt X11) #target_link_libraries(nw-viewer raylib GL m pthread dl rt X11)
# NetWorld - Game Engine for IAs competition # NetWorld - Game Engine for IAs competition
## Dependance NetWorld se veut devenir un moteur de jeux KISS (Keep It Stupid Simple) basés sur la librairie multi-plateforme RayLib.
La particularité du projet est de modéliser le monde comme un réseau de positions clés sur lesquelles peuvent de baller les entités en interaction.
Raylib. ## Installation
Projet conçu pour une compilation avec GCC et la librairie Raylib.
### Dépendance sous Linux (Ubuntu):
## Installation sour Linux (Ubuntu):
**Fortement recommandé...** **Fortement recommandé...**
Installer gcc, CMake et git: Installer gcc, CMake et git:
Dans un terminal: Dans un terminal:
```bash ```bash
sudo apt update sudo apt update
sudo apt install build-essential git cmake sudo apt install build-essential git cmake
sudo apt install libasound2-dev mesa-common-dev libx11-dev libxrandr-dev libxi-dev xorg-dev libgl1-mesa-dev libglu1-mesa-dev sudo apt install libasound2-dev mesa-common-dev libx11-dev libxrandr-dev libxi-dev xorg-dev libgl1-mesa-dev libglu1-mesa-dev
``` ```
Cloner NetWorld.
Installer Raylib sur la version 3.0.0 sous linux [[cf. raylib-wiki](https://github.com/raysan5/raylib/wiki/Working-on-GNU-Linux)] en suivant le 'Build raylib using CMake' un peut modifie suivant: Installer Raylib sur la version 3.0.0
**Méthode avec compilation de la Raylib:**
En suivant le tutoriel pour linux [[cf. raylib-wiki](https://github.com/raysan5/raylib/wiki/Working-on-GNU-Linux)], avec un 'Build raylib using CMake' un peut modifié:
```bash ```bash
git clone https://github.com/raysan5/raylib.git raylib git clone https://github.com/raysan5/raylib.git raylib
...@@ -33,63 +48,152 @@ sudo make install ...@@ -33,63 +48,152 @@ sudo make install
cd .. cd ..
``` ```
First test of RayLib:
```bash Vous pouvez optionnellement détruire le repo.
gcc -o nw-hello src/main-hello.c -std=c99 -Wall -Wextra -lraylib
./nw-hello
```
Compiling NetWorld using a little home-made script:
```bash ```bash
bin/build.sh rm -fr raylib
``` ```
## Installation sous Window :
**non recommandé** ### Dépendance sous Window :
**Non recommandé**
Installer Minimalist GNU for Windows GCC tools' set ([MinGW](http://www.mingw.org/)) with the [setup UI](https://osdn.net/projects/mingw/downloads/68260/mingw-get-setup.exe/) program. Installer Minimalist GNU for Windows GCC tools' set ([MinGW](http://www.mingw.org/)) with the [setup UI](https://osdn.net/projects/mingw/downloads/68260/mingw-get-setup.exe/) program.
L'installer directement à la racine de votre système (C:). L'installer directement à la racine de votre système (C:).
Select the developer toolkit (that automatically include msys), base-bin, and gcc for C++. Ne pas oublier de faire un "installation>update changes". Select the developer toolkit (that automatically include msys), base-bin, and gcc for C++. Ne pas oublier de faire un "installation>update changes".
Ajouter "C:\MinGW\bin" dans votre variable d'environnement PATH. (panneau de conifg. - système - param. système avancé - variable d'env. - PATH)
Installer [Git for Windows](https://gitforwindows.org/). Ajouter "C:\MinGW\bin" dans votre variable d'environnement *PATH* (panneau de conifg. - système - param. système avancé - variable d'env. - *PATH*). Cette variables regroupe l'ensemble des chemins aux bous desquels le système peut trouver ces ressources.
Installer VSC (Visual Studio Code), on utilisera son terminal PowerShell. Installer [Git for Windows](https://gitforwindows.org/). On utilisera notamment son invite de commande *git-bash* comme terminal.
Rebooter la machine.
Installer Raylib sur la version 3.0.0 sous Window [[cf. raylib-wiki](https://github.com/raysan5/raylib)] en passant par la [release](https://github.com/raysan5/raylib/releases) pour MinGW. Installer Raylib sur la version 3.0.0 sous Window [[cf. raylib-wiki](https://github.com/raysan5/raylib)] en passant par la [release](https://github.com/raysan5/raylib/releases) pour MinGW.
- Télécharger la version 3.0.0 de RayLib pour [Win32 mingw](https://github.com/raysan5/raylib/releases/download/3.0.0/raylib-3.0.0-Win32-mingw.zip) (même sur une machine 64bit). - Télécharger la version 3.0.0 de RayLib pour [Win32 mingw](https://github.com/raysan5/raylib/releases/download/3.0.0/raylib-3.0.0-Win32-mingw.zip) (même sur une machine 64bit).
- Extraire et copier le contenu des repertoires bin include et lib respectivement dans les répertoires bin, include et lib se trouvant dans "C:\MinGW" - Extraire et copier le contenu des repertoires bin include et lib respectivement dans les répertoires bin, include et lib se trouvant dans "C:\MinGW"
- copier "C:\MinGW\bin\libraylib.dll" en "C:\MinGW\bin\raylib.dll". - Copier "C:\MinGW\bin\libraylib.dll" en "C:\MinGW\bin\raylib.dll".
Dans un terminal PowerShell:
Dans le terminal (git-bash):
```bash ```bash
cp C:\MinGW\bin\libraylib.dll C:\MinGW\bin\raylib.dll cp C:\MinGW\bin\libraylib.dll C:\MinGW\bin\raylib.dll
``` ```
On aura aussi besoin du programme *make* qui permet d'automatiser le processus de construction d'un projet. Il est déjà installé, mais sous le nom de '*C:\MinGW\bin\mingw32-make.exe*'
Dans le terminal (git-bash):
```bash
cp C:\MinGW\bin\mingw32-make.exe C:\MinGW\bin\make.exe
```
Rebooter la machine (pour notamment prendre en charge le nouveau *PATH*).
Ouf... Ouf...
On peut tester de compiler un premier programme hello.c avec raylib. Dans un terminal PowerShell:
### Tester l'installation:
Récupérer l'[exemple](https://www.raylib.com/examples.html) basic de Raylib en copiant le code dans un fichier '*main-basic.c*'
Puis compiler dans votre terminal:
```bash
gcc -o basic-raylib main-basic.c -std=c99 -Wall -Wextra -lraylib
```
Un exécutable est normalement généré:
```bash
./basic-raylib
```
### Compiler NetWorld
Ya plus qu'à cloner et compiler NetWorld:
```bash ```bash
gcc -o nw-hello src/hello.c -std=c99 -lraylib git clone ssh://git@gvipers.imt-lille-douai.fr:2222/fatus/networld.git NetWorld
./nw-hello cd NetWorld
make
``` ```
Des exécutables sont générés au format *nw-xxxx*.
## Organisation du répertoire
Répertoire:
- *bin* : stocke de scripts pour automatiser des procédures utiles au projet.
- *.git* : répertoire de gestion de version propre à git.
- *src* : le code source du projet.
- *doc* : la documentation du projet.
Fichier à la racine:
- *.gitignore* : fichier de configuration git listant les ressources à ne pas versionner.
- *config* : Fichier de configuration pour le make (cf. *src/Makefile*).
- *config.default* : Fichier *config* utilisé à défaut (cf. *Makefile*).
- *Makefile* : Instruction de construction du projet pour *make*. Génère *config* et fait appel à *src/Makefile*.
- *projet-outline.md* : Un descriptif des composants logiciel réalisé et prévu.
- *nw-xxxx* : Les exécutables de NetWorld.
- *README,md* : Votre serviteur.
## Idée de jeux induits: ## Idée de jeux induits:
## Optimisation de routage dynamique (Pb. réseaux)
## Optimisation de routage dynamique (Pb. réseau)
Générer des robots et les déplacer pour couvrir au mieux un réseau. Générer des robots et les déplacer pour couvrir au mieux un réseau.
- être résiliant aux pannes - être résiliant aux pannes
- Réseau en constance augmentation - Réseau en constance augmentation
- Circonscrire les Zones défectueuses.... - Circonscrire les Zones défectueuses....
## WarBot ## WarBot
Des équipes de robots cherchent à s'entre-tuer.
## OpenDrive
Course de véhicule en environnement ouvert et dynamique. (Avec des aspects de dynamique des véhicules quasiment absents, mais la nécessité de prendre en compte aux mieux les autres véhicules pour optimiser sont choix de chemins).
## ...
\ No newline at end of file
#!/bin/bash
if [ ! -d build ]; then
mkdir build
fi
cd build
cmake ..
make
cp nw-* ..
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment