Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.

README.md

Embed Resource

Embed binary files and resources (such as GLSL Shader source files) into C++ projects. Uses C++11 features and Boost for filesystem.

Include this repository in your CMake based project:

git submodule add https://github.com/cyrilcode/embed-resource.git lib/embed-resource

Then add to your CMakeLists.txt for your project:

include_directories(lib/embed-resource)
add_subdirectory(lib/embed-resource)

Now you can add your resources, by calling the provided embed_resources() function in your CMakeLists.txt file:

embed_resources(MyResources shaders/vertex.glsl shaders/frag.glsl)

Then link to your binary by adding the created variable to your add_executable statement:

add_executable(MyApp ${SOURCE_FILES} ${MyResources})

In your C++ project you can access your embed resources using the Resource class provided in Resource.h. Here's an example:

#include <iostream>
using namespace std;

#include "Resource.h"

int main() {

    Resource text = LOAD_RESOURCE(frag_glsl);
    cout << string(text.data(), text.size()) << endl;

    return EXIT_SUCCESS;
}

NB: To reference the file, replace the . in frag.glsl with an underscore _. So, in this example, the symbol name is frag_glsl.

Credits...

This uses ideas from this blog post which included the Resource class and macro idea. Unfortunately, the use of ld command didn't work on OSX. So, instead, I've used a simple C++ executable that does the same conversion, based on ideas from this Stack Overflow question.

License

Public Domain / WTFPL

About

Embed binary or resource files (eg textures or GLSL shader files) in CPP using C++11.

Resources

Releases

No releases published

Packages

No packages published
You can’t perform that action at this time.