diff --git a/cMake/FreeCadMacros.cmake b/cMake/FreeCadMacros.cmake index 3ac60b1845..7d0dbe1244 100644 --- a/cMake/FreeCadMacros.cmake +++ b/cMake/FreeCadMacros.cmake @@ -123,39 +123,46 @@ endmacro(copy_to_main_output_paths) # It would be a bit cleaner to generate these files in ${CMAKE_CURRENT_BINARY_DIR} macro(generate_from_xml BASE_NAME) - file(TO_NATIVE_PATH ${CMAKE_SOURCE_DIR}/src/Tools/generate.py TOOL_PATH) - file(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/${BASE_NAME}.xml SOURCE_PATH) + set(TOOL_PATH "${CMAKE_SOURCE_DIR}/src/Tools/generate.py") + file(TO_NATIVE_PATH "${TOOL_PATH}" TOOL_NATIVE_PATH) + file(TO_NATIVE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${BASE_NAME}.xml" SOURCE_NATIVE_PATH) - file(TO_NATIVE_PATH ${CMAKE_CURRENT_BINARY_DIR}/${BASE_NAME}.cpp SOURCE_CPP_PATH) + set(SOURCE_CPP_PATH "${CMAKE_CURRENT_BINARY_DIR}/${BASE_NAME}.cpp" ) + # BASE_NAME may include also a path name - GET_FILENAME_COMPONENT(OUTPUT_PATH ${SOURCE_CPP_PATH} PATH) - if (NOT EXISTS ${SOURCE_CPP_PATH}) + GET_FILENAME_COMPONENT(OUTPUT_PATH "${SOURCE_CPP_PATH}" PATH) + file(TO_NATIVE_PATH "${OUTPUT_PATH}" OUTPUT_NATIVE_PATH) + if(NOT EXISTS "${SOURCE_CPP_PATH}") # assures the source files are generated at least once - message(STATUS "${SOURCE_CPP_PATH}") - execute_process(COMMAND ${PYTHON_EXECUTABLE} ${TOOL_PATH} --outputPath ${OUTPUT_PATH} ${SOURCE_PATH} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + + execute_process(COMMAND "${PYTHON_EXECUTABLE}" "${TOOL_NATIVE_PATH}" --outputPath "${OUTPUT_NATIVE_PATH}" "${SOURCE_NATIVE_PATH}" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" ) - endif (NOT EXISTS ${SOURCE_CPP_PATH}) + endif() add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${BASE_NAME}.h ${CMAKE_CURRENT_BINARY_DIR}/${BASE_NAME}.cpp - COMMAND ${PYTHON_EXECUTABLE} ${TOOL_PATH} --outputPath ${OUTPUT_PATH} ${BASE_NAME}.xml - MAIN_DEPENDENCY ${BASE_NAME}.xml - DEPENDS ${CMAKE_SOURCE_DIR}/src/Tools/generateTemplates/templateClassPyExport.py - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - COMMENT Building ${BASE_NAME}.h/.cpp out of ${BASE_NAME}.xml + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${BASE_NAME}.h" "${CMAKE_CURRENT_BINARY_DIR}/${BASE_NAME}.cpp" + COMMAND ${PYTHON_EXECUTABLE} "${TOOL_NATIVE_PATH}" --outputPath "${OUTPUT_NATIVE_PATH}" ${BASE_NAME}.xml + MAIN_DEPENDENCY "${SOURCE_PATH}" + DEPENDS + "${CMAKE_SOURCE_DIR}/src/Tools/generateTemplates/templateClassPyExport.py" + "${TOOL_PATH}" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + COMMENT "Building ${BASE_NAME}.h/.cpp out of ${BASE_NAME}.xml" ) endmacro(generate_from_xml) macro(generate_from_py BASE_NAME OUTPUT_FILE) - file(TO_NATIVE_PATH ${CMAKE_SOURCE_DIR}/src/Tools/PythonToCPP.py TOOL_PATH) - file(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/${BASE_NAME}.py SOURCE_PATH) + 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}/${BASE_NAME}.py" SOURCE_NATIVE_PATH) add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_FILE} - COMMAND ${PYTHON_EXECUTABLE} ${TOOL_PATH} ${SOURCE_PATH} ${OUTPUT_FILE} - MAIN_DEPENDENCY ${BASE_NAME}.py - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT Building files out of ${BASE_NAME}.py) + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_FILE}" + COMMAND "${PYTHON_EXECUTABLE}" "${TOOL_NATIVE_PATH}" "${SOURCE_NATIVE_PATH}" "${OUTPUT_FILE}" + MAIN_DEPENDENCY "${CMAKE_CURRENT_SOURCE_DIR}/${BASE_NAME}.py" + DEPENDS "${TOOL_PATH}" + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" + COMMENT "Building files out of ${BASE_NAME}.py") endmacro(generate_from_py)