Merge pull request #10 from FoxMoss/main
feat: allow cmake built executable to be run anywhere
This commit is contained in:
commit
a34f2fd9a3
@ -2,6 +2,13 @@
|
||||
#include "imgui_impl_glfw.h"
|
||||
#include "imgui_impl_opengl3.h"
|
||||
|
||||
#ifdef LINUX
|
||||
#include <cstdlib>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
#include <glad/glad.h>
|
||||
#include <GLFW/glfw3.h>
|
||||
#define STB_IMAGE_IMPLEMENTATION
|
||||
@ -59,8 +66,39 @@ float rectangleVertices[] =
|
||||
-1.0f, 1.0f, 0.0f, 1.0f
|
||||
};
|
||||
|
||||
int main()
|
||||
{
|
||||
int main (int argc, char *argv[]) {
|
||||
#ifdef LINUX
|
||||
char* resolved_path = realpath(argv[0],NULL);
|
||||
if (resolved_path == NULL) {
|
||||
printf("%s: Please do not place binary in PATH\n", argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
size_t resolved_length = strlen(resolved_path);
|
||||
|
||||
// remove executable from path
|
||||
for (size_t i = resolved_length; i > 0; i--) {
|
||||
if (resolved_path[i] == '/' && resolved_path[i+1] != 0) {
|
||||
resolved_path[i+1] = 0;
|
||||
resolved_length = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
char* assets_path = (char *)malloc(resolved_length + strlen("assets") + 2);
|
||||
strcpy(assets_path, resolved_path);
|
||||
strcpy(assets_path + resolved_length + 1, "assets");
|
||||
struct stat path_stat;
|
||||
if(stat(assets_path, &path_stat) == -1 || !S_ISDIR(path_stat.st_mode)) {
|
||||
printf("%s: Asset directory not found\n", argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
free(assets_path);
|
||||
|
||||
chdir(resolved_path);
|
||||
free(resolved_path);
|
||||
#endif
|
||||
|
||||
// Initialize GLFW
|
||||
glfwInit();
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
|
||||
|
@ -4,6 +4,10 @@ add_executable(scuffed_mc
|
||||
Camera.cpp Planet.cpp WorldGen.cpp ../vendor/glad.c
|
||||
)
|
||||
|
||||
if(LINUX)
|
||||
add_compile_definitions(LINUX)
|
||||
endif()
|
||||
|
||||
# make sure the program runs in the right place from visual studio
|
||||
set_target_properties(scuffed_mc PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user