CMake: Fix build dependency tracking for Python bindings generation.

This caused a rebuild to always happen due to incorrect dependency
tracking.

Fixes https://github.com/FreeCAD/FreeCAD/issues/20402.
This commit is contained in:
Joao Matos
2025-03-24 17:37:55 +00:00
committed by Benjamin Nauck
parent b33c236322
commit 0206ff59cd
2 changed files with 5 additions and 4 deletions

View File

@@ -148,7 +148,8 @@ macro(generate_from_py BASE_NAME)
file(TO_NATIVE_PATH "${TOOL_PATH}" TOOL_NATIVE_PATH)
file(TO_NATIVE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${BASE_NAME}.pyi" SOURCE_NATIVE_PATH)
set(SOURCE_CPP_PATH "${CMAKE_CURRENT_BINARY_DIR}/${BASE_NAME}.cpp" )
set(SOURCE_CPP_PATH "${CMAKE_CURRENT_BINARY_DIR}/${BASE_NAME}Py.cpp" )
set(SOURCE_H_PATH "${CMAKE_CURRENT_BINARY_DIR}/${BASE_NAME}Py.h" )
# BASE_NAME may include also a path name
GET_FILENAME_COMPONENT(OUTPUT_PATH "${SOURCE_CPP_PATH}" PATH)
@@ -161,14 +162,14 @@ macro(generate_from_py BASE_NAME)
)
endif()
add_custom_command(
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${BASE_NAME}_.h" "${CMAKE_CURRENT_BINARY_DIR}/${BASE_NAME}_.cpp"
OUTPUT "${SOURCE_H_PATH}" "${SOURCE_CPP_PATH}"
COMMAND ${Python3_EXECUTABLE} "${TOOL_NATIVE_PATH}" --outputPath "${OUTPUT_NATIVE_PATH}" ${BASE_NAME}.pyi
MAIN_DEPENDENCY "${BASE_NAME}.pyi"
DEPENDS
"${CMAKE_SOURCE_DIR}/src/Tools/bindings/templates/templateClassPyExport.py"
"${TOOL_PATH}"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
COMMENT "Building ${BASE_NAME}.h/.cpp out of ${BASE_NAME}.pyi"
COMMENT "Building ${BASE_NAME}Py.h/.cpp out of ${BASE_NAME}.pyi"
)
endmacro(generate_from_py)

View File

@@ -285,7 +285,7 @@ generate_from_py(ViewProviderExtension)
generate_from_xml(WorkbenchPy)
generate_from_py(Workbench)
generate_from_xml(Selection/SelectionObjectPy)
generate_from_py(Selection/SelectionObjectPy)
generate_from_py(Selection/SelectionObject)
generate_from_xml(LinkViewPy)
generate_from_py(LinkView)
generate_from_xml(ViewProviderLinkPy)