From 5185581f3580bc9160a0005f9c4461e25e79fc27 Mon Sep 17 00:00:00 2001 From: Anselme Date: Sun, 24 Apr 2016 15:01:29 +0200 Subject: [PATCH] fixed absolute paths --- .gitignore | 1 + resource.cmake | 2 +- resource/CMakeLists.txt | 10 ---------- resource/main.cpp | 30 +++++++++++++++++++----------- test/CMakeLists.txt | 4 +--- test/{plop.txt => hello.txt} | 0 test/test.cpp | 12 +++++------- test/test.exe | Bin 72480 -> 0 bytes test/{plop2.txt => test.txt} | 0 9 files changed, 27 insertions(+), 32 deletions(-) delete mode 100644 resource/CMakeLists.txt rename test/{plop.txt => hello.txt} (100%) delete mode 100644 test/test.exe rename test/{plop2.txt => test.txt} (100%) diff --git a/.gitignore b/.gitignore index 715dc43..244d2ac 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ Modules/* test/CMakeFiles/* +test/res.cpp cmake_install.cmake Makefile CMakeCache.txt diff --git a/resource.cmake b/resource.cmake index 1d3dfc0..db4566e 100644 --- a/resource.cmake +++ b/resource.cmake @@ -16,7 +16,7 @@ add_executable(SparrowResource ${CMAKE_TEMPLATE_PATH}/resource/main.cpp) add_custom_command( OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/${RESOURCE_DST_FILE} COMMAND SparrowResource - ARGS ${CMAKE_CURRENT_SOURCE_DIR}/${RESOURCE_DST_FILE} ${RES_SRC_FILE} + ARGS ${CMAKE_CURRENT_SOURCE_DIR}/${RESOURCE_DST_FILE} ${PROJECT_SOURCE_DIR} ${RES_SRC_FILE} DEPENDS ${RES_SRC_FILE} COMMENT "Generating resource file" ) diff --git a/resource/CMakeLists.txt b/resource/CMakeLists.txt deleted file mode 100644 index 4754a52..0000000 --- a/resource/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -project(SparrowResource) -cmake_minimum_required(VERSION 2.8) - -set(CMAKE_TEMPLATE_PATH "..") - -# choose source file -set(EXEC_SRC_LIST main.cpp) - -include(${CMAKE_TEMPLATE_PATH}/template.cmake) - diff --git a/resource/main.cpp b/resource/main.cpp index ad12c2e..db81823 100644 --- a/resource/main.cpp +++ b/resource/main.cpp @@ -6,16 +6,11 @@ using namespace std; #define NB_VAL_PER_LINE 256 - #define FILE_BEGIN "#include \n\ #include \n\ \n\ namespace Resource {\n\ typedef std::unordered_map ResourceMap;\n" - - -#define FILE_MID "" - #define FILE_END "\n\ }\n\ @@ -42,7 +37,7 @@ bool addFile(const string &inFile, FILE *out) fprintf(out, "\n"); } while(nbRead == NB_VAL_PER_LINE); - fprintf(out, "};\n"); + fprintf(out, ", 0x00}; // additionnal byte used to null-terminate ascii data\n"); ++n; fclose(in); return true; @@ -50,9 +45,13 @@ bool addFile(const string &inFile, FILE *out) int main(int argc, char *argv[]) { - if(argc < 3) + if(argc < 4) { - printf("usage : %s RESOURCE_PACK_NAME [LIST_OF_FILES_TO_BAKE]\n", argv[0]); + printf("usage : %s RESOURCE_PACK_FILE_TO_CREATE RESOURCE_PACK_ROOT [LIST_OF_FILES_TO_BAKE]\n\n", argv[0]); + printf("RESOURCE_PACK_FILE_TO_CREATE is the c++ source file that will be created,\n"); + printf("the resource pack will be named from the file name\n"); + printf("example, if the filename provided is : /directory/sources/myResourcePack.cpp , the resource pack will be named myResourcePack\n\n"); + printf("RESOURCE_PACK_ROOT is the root directory or the resources, they will be accessible from their relative path to this directory\n"); return EXIT_SUCCESS; } @@ -72,19 +71,28 @@ int main(int argc, char *argv[]) } fprintf(out, FILE_BEGIN); - for(int i=2; i offsets; + for(int i=3; i " << it.second << endl; } diff --git a/test/test.exe b/test/test.exe deleted file mode 100644 index 1dcf15adba693d5f1a42ea6afc5388a977511bef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72480 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