Guest User

Untitled

a guest
Jul 16th, 2016
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.25 KB | None | 0 0
  1. include_rules
  2.  
  3. # Nom du projet, utilisé pour le nom du fichier de sortie finale.
  4. BIN_NAME = ns_framework
  5.  
  6. # Compilateur à utiliser.
  7. CC = g++
  8. # Paramètres de base du compilateur.
  9. CC_ARGS = -IHeaders/ -std=c++11 -fPIC
  10. # Paramètres spécifique pour chaque fichier. Le nom du fichier est sans les
  11. # dossier et sans l'extension (ex. dossier/fichier.cpp -> CC_ARGS_fichier).
  12. # Exemple :
  13. # CC_ARGS_NomDuFichier = Paramètres du compilateur.
  14.  
  15. # Lieur à utiliseur.
  16. LD = ld
  17. # Paramètres du lieur
  18. LD_ARGS = -shared
  19. # Librairies à utiliser.
  20. LD_LIBS = -ltinyxml2 -lsfml-system -lsfml-window -lsfml-graphics
  21.  
  22. # Dossier contenant les fichiers sources.
  23. SRC_DIR = Sources
  24. # Dossier de sortie contenant les fichiers intermédiaire.
  25. OBJ_DIR = Objects
  26. # Dossier de sortie contenant le fichier de sortie finale ainsi que les
  27. # resources.
  28. BIN_DIR = ..
  29.  
  30.  
  31.  
  32. # Si on est en version de débug
  33. ifeq (@(VARIANT),Debug)
  34. CC_ARGS += -g -Wall -DDEBUG
  35. endif
  36.  
  37. # Si on est en version de production
  38. ifeq (@(VARIANT),Release)
  39. CC_ARGS += -O3 -Wall -Werror -DRELEASE
  40. endif
  41.  
  42.  
  43.  
  44. # Si on vise la platforme Linux
  45. ifeq (@(PLATFORM),Linux)
  46. CC_ARGS += -DLINUX
  47.  
  48. # On met à jour le nom du fichier de sortie final.
  49. BIN_NAME = lib$(BIN_NAME).so
  50. endif
  51.  
  52. # Si on vise la platforme Windows (pas supporté actuellement)
  53. ifeq (@(PLATFORM),Windows)
  54. error Windows platform not currently supported.
  55. endif
  56.  
  57.  
  58.  
  59. # Si on vise l'architecture x86_64 (64bits)
  60. ifeq (@(ARCH),x86_64)
  61. CC_ARGS += -DX86_64 -m64
  62.  
  63. ifeq (@(PLATFORM),Linux)
  64. LD_ARGS += -melf_x86_64
  65. endif
  66. endif
  67.  
  68. # Si on vise l'architecture i386 (32bits)
  69. ifeq (@(ARCH),i386)
  70. CC_ARGS += -DI386 -m32
  71.  
  72. ifeq (@(PLATFORM),Linux)
  73. LD_ARGS += -melf_i386
  74. endif
  75. endif
  76.  
  77.  
  78.  
  79. # On définie des macros standards.
  80. !compile = |> ^ Compiling %f... ^ $(CC) $(CC_ARGS) $(CC_ARGS_%g) -c -o %o %f |>
  81. !link = |> ^ Linking %o... ^ $(LD) $(LD_ARGS) $(LD_LIBS) -o %o %f |>
  82.  
  83. # Liste des règles.
  84.  
  85.  
  86. # Compilation des fichiers sources.
  87. : foreach $(SRC_DIR)/xml/*.cpp |> !compile |> $(OBJ_DIR)/xml/%g.o {OBJECTS}
  88. : foreach $(SRC_DIR)/scene/*.cpp |> !compile |> $(OBJ_DIR)/scene/%g.o {OBJECTS}
  89.  
  90. # Liage des fichiers intermédiaires vers le fichier de sortie final.
  91. : {OBJECTS} |> !link |> $(BIN_DIR)/$(BIN_NAME) $(BIN_DIR)/<LIBRARIES>
Add Comment
Please, Sign In to add comment