From e4f8d9807960aacbe230bf064cc65e7a24e23264 Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 14 Oct 2019 22:20:59 +0200 Subject: [PATCH] add new CMake macro generate_from_any and extend PythonToCPP script to create source file from any text file --- cMake/FreeCadMacros.cmake | 13 +++++++++++++ src/Tools/PythonToCPP.py | 13 +++++++++---- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/cMake/FreeCadMacros.cmake b/cMake/FreeCadMacros.cmake index 58ddc668f2..4774d13867 100644 --- a/cMake/FreeCadMacros.cmake +++ b/cMake/FreeCadMacros.cmake @@ -161,6 +161,19 @@ macro(generate_from_py BASE_NAME OUTPUT_FILE) COMMENT "Building files out of ${BASE_NAME}.py") endmacro(generate_from_py) +macro(generate_from_any INPUT_FILE OUTPUT_FILE VARIABLE) + set(TOOL_PATH "${CMAKE_SOURCE_DIR}/src/Tools/PythonToCPP.py") + file(TO_NATIVE_PATH "${TOOL_PATH}" TOOL_NATIVE_PATH) + file(TO_NATIVE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${INPUT_FILE}" SOURCE_NATIVE_PATH) + add_custom_command( + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_FILE}" + COMMAND "${PYTHON_EXECUTABLE}" "${TOOL_NATIVE_PATH}" "${SOURCE_NATIVE_PATH}" "${OUTPUT_FILE}" "${VARIABLE}" + MAIN_DEPENDENCY "${CMAKE_CURRENT_SOURCE_DIR}/${INPUT_FILE}" + DEPENDS "${TOOL_PATH}" + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" + COMMENT "Building files out of ${INPUT_FILE}") +endmacro(generate_from_any) + # generates the ui -> cpp h files #macro(qt4_wrap_ui infiles ) diff --git a/src/Tools/PythonToCPP.py b/src/Tools/PythonToCPP.py index 5877cf5526..2d72ff68eb 100644 --- a/src/Tools/PythonToCPP.py +++ b/src/Tools/PythonToCPP.py @@ -9,19 +9,24 @@ import os,sys,string file = open(sys.argv[1]) -if(len(sys.argv) > 3): - sys.stderr.write("Wrong Parameter\n Usage:\n PythonToCPP Infile.py [Outfile]\n") +if(len(sys.argv) > 4): + sys.stderr.write("Wrong Parameter\n Usage:\n PythonToCPP Infile.py [Outfile][Variable]\n") if(len(sys.argv) > 2): out = open(sys.argv[2],"w"); else: out = sys.stdout +if(len(sys.argv) > 3): + identifier = sys.argv[3] +else: + identifier = os.path.basename(sys.argv[1]) + identifier = identifier[:-3] + lines = file.readlines() # We want to use this script for files in another directory, so we extract the actual file name -fn = os.path.basename(sys.argv[1]) -out.write("const char " + fn[:-3] + "[] =") +out.write("const char " + identifier + "[] =") for line in lines: # remove new line