Out-of-source builds without environment variables.

Using CMake's configure_file command to generate a header file defining
a C string containing the path to the source root directory; the
directory where the resource folder is. Textures and models can now be
found directly as long the user doesn't move stuff around.

Shaders are still a problem.
This commit is contained in:
Marin Nilsson
2015-08-04 19:41:08 +02:00
parent 83497513eb
commit 1d2b1dae19
3 changed files with 6 additions and 1 deletions

View File

@@ -111,6 +111,8 @@ set(5.advanced_lighting
)
configure_file(configuration/root_directory.h.in configuration/root_directory.h)
include_directories(${CMAKE_BINARY_DIR}/configuration)
foreach(CHAPTER ${CHAPTERS})
foreach(DEMO ${${CHAPTER}})

View File

@@ -0,0 +1 @@
const char * logl_root = "${CMAKE_SOURCE_DIR}";

View File

@@ -2,6 +2,7 @@
#define FILESYSTEM_H
#include <string>
#include "root_directory.h" // This is a configuration file generated by CMake.
class FileSystem
{
@@ -18,7 +19,8 @@ public:
private:
static std::string const & getRoot()
{
static char const * givenRoot {getenv("LOGL_ROOT_PATH")};
static char const * envRoot = getenv("LOGL_ROOT_PATH");
static char const * givenRoot {envRoot != nullptr ? envRoot : logl_root};
static std::string root {givenRoot != nullptr ? givenRoot : ""};
return root;
}