@@ -15,7 +15,12 @@ if(WIN32)
1515endif ()
1616
1717if (UNIX )
18- list (APPEND QCOMMONCONSOLE_DEFINITIONS __X86_64__)
18+ # Detect architecture for Linux builds
19+ if (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64|ARM64" )
20+ list (APPEND QCOMMONCONSOLE_DEFINITIONS __AARCH64__)
21+ else ()
22+ list (APPEND QCOMMONCONSOLE_DEFINITIONS __X86_64__)
23+ endif ()
1924 set (QCOMMONCONSOLE_CXX_FLAGS
2025 -Werror
2126 -Wno-unused-result
@@ -40,29 +45,49 @@ if(UNIX)
4045 )
4146endif ()
4247
43- if ( CMAKE_BUILD_TYPE STREQUAL "Debug" )
44- list ( APPEND QCOMMONCONSOLE_DEFINITIONS _DEBUG DEBUG )
45- if (WIN32 )
46- set (CONFIGURATION "x64/Debug " )
48+ # Determine architecture label for output directory
49+ if ( WIN32 )
50+ if (CMAKE_GENERATOR_PLATFORM STREQUAL "ARM64" OR CMAKE_SYSTEM_PROCESSOR MATCHES "ARM64|aarch64" )
51+ set (_QEPM_ARCH "ARM64 " )
4752 else ()
48- set (CONFIGURATION "Linux/Debug " )
53+ set (_QEPM_ARCH "x64 " )
4954 endif ()
50- else ()
51- list (APPEND QCOMMONCONSOLE_DEFINITIONS _NDEBUG NDEBUG)
52- if (WIN32 )
53- set (CONFIGURATION "x64/Release" )
55+ elseif (UNIX )
56+ if (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64|ARM64" )
57+ set (_QEPM_ARCH "Linux-ARM64" )
5458 else ()
55- set (CONFIGURATION "Linux/Release " )
59+ set (_QEPM_ARCH "Linux" )
5660 endif ()
5761endif ()
5862
63+ if (CMAKE_BUILD_TYPE STREQUAL "Debug" )
64+ list (APPEND QCOMMONCONSOLE_DEFINITIONS _DEBUG DEBUG)
65+ set (CONFIGURATION "${_QEPM_ARCH} /Debug" )
66+ else ()
67+ list (APPEND QCOMMONCONSOLE_DEFINITIONS _NDEBUG NDEBUG)
68+ set (CONFIGURATION "${_QEPM_ARCH} /Release" )
69+ endif ()
70+
5971set (BUILDROOT ${CMAKE_SOURCE_DIR } /__Builds/${CONFIGURATION} )
6072set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${BUILDROOT} /bin)
6173set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${BUILDROOT} /lib)
6274set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${BUILDROOT} /lib)
6375
6476if (WIN32 )
65- find_program (WINDEPLOYQT_EXECUTABLE windeployqt HINTS "${Qt6_DIR} /../../../bin" )
77+ # For cross-compilation (e.g. ARM64 target on x64 host), windeployqt must
78+ # come from the HOST Qt installation, not the target sysroot.
79+ # QT_HOST_PATH is set by cmake when cross-compiling; fall back to Qt6_DIR.
80+ if (DEFINED QT_HOST_PATH)
81+ find_program (WINDEPLOYQT_EXECUTABLE windeployqt
82+ HINTS "${QT_HOST_PATH} /bin"
83+ NO_DEFAULT_PATH
84+ )
85+ endif ()
86+ if (NOT WINDEPLOYQT_EXECUTABLE)
87+ find_program (WINDEPLOYQT_EXECUTABLE windeployqt
88+ HINTS "${Qt6_DIR} /../../../bin"
89+ )
90+ endif ()
6691 if (NOT WINDEPLOYQT_EXECUTABLE)
6792 set (WINDEPLOYQT_EXECUTABLE windeployqt)
6893 endif ()
@@ -137,4 +162,4 @@ function(QCommonConsoleSettings target_name)
137162 target_link_options (${target_name} PRIVATE ${QCOMMONCONSOLE_LINK_FLAGS} )
138163 endif ()
139164 target_include_directories (${target_name} PRIVATE ${BUILDROOT} /ui/QCommon )
140- endfunction ()
165+ endfunction ()
0 commit comments