Ajout de la librairie whereami pour la position de l'exécutable

This commit is contained in:
Mattéo Delabre 2016-03-24 09:11:17 +01:00
parent fd0b73154f
commit 214cc173fc
2 changed files with 11 additions and 13 deletions

2
CMakeLists.txt vendored
View File

@ -3,7 +3,7 @@ project(ptf)
# Inclusion des fichiers d'en-tête et de source
include_directories(include)
file(GLOB SOURCES "src/*.cpp")
file(GLOB SOURCES "src/*.cpp" "src/*.c")
# Affichage de tous les avertisements
if(MSVC)

View File

@ -1,15 +1,10 @@
#include "resource_manager.hpp"
#include "whereami.h"
#include <iostream>
// fonctionnalités cross-platform pour les fichiers
// source: http://stackoverflow.com/a/145309/3452708
#include <stdio.h>
#ifdef _WIN32
#include <direct.h>
#define getcwd _getcwd
#define FILE_SEP '\\'
#else
#include <unistd.h>
#define FILE_SEP '/'
#endif
@ -18,17 +13,20 @@ ResourceManager::~ResourceManager() {
}
/**
* Récupère le chemin actuel de l'exécutable
* sous la forme d'une chaîne de caractères
* Récupère le chemin actuel de l'exécutable sous la forme
* d'une chaîne de caractères grâce à la librairie whereami
*/
std::string getCurrentDirectory() {
char buffer[FILENAME_MAX];
int length = wai_getExecutablePath(NULL, 0, NULL), dirname_length;
char* buffer = new char[length + 1];
wai_getExecutablePath(buffer, length, &dirname_length);
if (getcwd(buffer, sizeof(buffer)) != NULL) {
return std::string(buffer);
if (dirname_length == 0) {
throw std::runtime_error("Impossible de déterminer le chemin actuel");
}
throw std::runtime_error("Impossible de déterminer le chemin actuel");
buffer[length] = '\0';
return std::string(buffer).substr(0, dirname_length);
}
sf::Texture& ResourceManager::getTexture(std::string name) {