Fix Qt build: disable AutoUic, run UIC manually for real .ui files

CMake's AutoUic mistakenly treats ui_interface.h (a hand-written
Bitcoin-convention header) as a Qt Designer output and looks for
interface.ui which doesn't exist. Fix by disabling AutoUic and
explicitly running qt5_wrap_ui on the actual .ui files.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-05 03:57:55 -07:00
parent e0e38d50ac
commit 0a0129cbcc
+13
View File
@@ -214,6 +214,17 @@ if(BUILD_QT)
"${CMAKE_CURRENT_SOURCE_DIR}/qt/plugins/mrichtexteditor" "${CMAKE_CURRENT_SOURCE_DIR}/qt/plugins/mrichtexteditor"
) )
# ui_interface.h is a hand-written header (Bitcoin convention), NOT a Qt
# Designer file. Disable AutoUic globally and run UIC manually for real .ui files.
set(CMAKE_AUTOUIC OFF)
# Collect all .ui files and run UIC on them explicitly
file(GLOB_RECURSE UI_FILES
"${CMAKE_CURRENT_SOURCE_DIR}/qt/forms/*.ui"
"${CMAKE_CURRENT_SOURCE_DIR}/qt/plugins/mrichtexteditor/*.ui"
)
qt5_wrap_ui(UI_HEADERS ${UI_FILES})
set(QT_SOURCES set(QT_SOURCES
qt/triangles.cpp qt/triangles.cpp
qt/trianglesgui.cpp qt/trianglesgui.cpp
@@ -303,6 +314,7 @@ if(BUILD_QT)
${QT_SOURCES} ${QT_SOURCES}
${QT_RESOURCES} ${QT_RESOURCES}
${QT_FORMS} ${QT_FORMS}
${UI_HEADERS}
# Per-target: compiled with QT_GUI define # Per-target: compiled with QT_GUI define
init.cpp init.cpp
wallet.cpp wallet.cpp
@@ -317,6 +329,7 @@ if(BUILD_QT)
target_include_directories(triangles-qt PRIVATE target_include_directories(triangles-qt PRIVATE
"${CMAKE_CURRENT_SOURCE_DIR}/qt" "${CMAKE_CURRENT_SOURCE_DIR}/qt"
"${CMAKE_CURRENT_SOURCE_DIR}/qt/plugins/mrichtexteditor" "${CMAKE_CURRENT_SOURCE_DIR}/qt/plugins/mrichtexteditor"
"${CMAKE_CURRENT_BINARY_DIR}"
) )
target_link_libraries(triangles-qt PRIVATE target_link_libraries(triangles-qt PRIVATE