https://bugzilla.redhat.com/show_bug.cgi?id=870455
--- Comment #8 from Erik van Pienbroek <[email protected]> --- The Fedora MinGW SIG recommends to use the mingw32-cmake / mingw64-cmake wrappers to call CMake with the proper environment set. Internally these wrappers call this RPM macro: %mingw32_cmake %{mingw32_env} ; \ if test -f CMakeLists.txt; then __mingw32_topdir=.; \\\ elif test -f ../CMakeLists.txt; then __mingw32_topdir=..; \\\ else __mingw32_topdir=""; fi; \\\ PATH=%{_prefix}/%{mingw32_target}/bin:$PATH %__cmake \\\ -DCMAKE_VERBOSE_MAKEFILE=ON \\\ -DCMAKE_INSTALL_PREFIX:PATH=%{mingw32_prefix} \\\ -DCMAKE_INSTALL_LIBDIR:PATH=%{mingw32_libdir} \\\ -DINCLUDE_INSTALL_DIR:PATH=%{mingw32_includedir} \\\ -DLIB_INSTALL_DIR:PATH=%{mingw32_libdir} \\\ -DSYSCONF_INSTALL_DIR:PATH=%{mingw32_sysconfdir} \\\ -DSHARE_INSTALL_PREFIX:PATH=%{mingw32_datadir} \\\ %{?_cmake_skip_rpath} \\\ -DBUILD_SHARED_LIBS:BOOL=ON \\\ -DCMAKE_TOOLCHAIN_FILE=/usr/share/mingw/Toolchain-mingw32.cmake \\\ ${MINGW_CMAKE_ARGS} \\\ ${MINGW32_CMAKE_ARGS} \\\ "$@" $__mingw32_topdir If I understand the discussion above correctly then the QT_BINARY_DIR which is set in Toolchain-mingw32.cmake / Toolchain-mingw64.cmake is redundant and should be removed. I just tried to remove it from the toolchain file, but doing so causes mingw32-cmake to not be able to detect to qt tools (like moc and rcc) any more. I think this is because QT_BINARY_DIR will be set to /usr/i686-w64-mingw32/sys-root/mingw/bin internally by CMake. However, this path only contains cross-compiled binaries. The native binaries belonging to the cross-compiled Qt are in /usr/i686-w64-mingw32/bin (we don't want to mix native and cross-compiled binaries in the same folder). In the FindQt4.cmake file there's this snippet of code: # ask qmake for the binary dir IF (NOT QT_BINARY_DIR OR QT_QMAKE_CHANGED) _qt4_query_qmake(QT_INSTALL_BINS qt_bins) SET(QT_BINARY_DIR ${qt_bins} CACHE INTERNAL "" FORCE) ENDIF (NOT QT_BINARY_DIR OR QT_QMAKE_CHANGED) The qmake variable QT_INSTALL_BINS is used by Qt's build system to determine where the (cross-)compiled binaries will be installed. I could try hack up the mingw-qt package so that QT_INSTALL_BINS points to /usr/i686-w64-mingw32/bin instead of /usr/i686-w64-mingw32/sys-root/mingw/bin but that isn't the most elegant solution and I'm not sure what else will break because of this.. All qmake mkspecs profiles contain variables like QMAKE_MOC which points to the full path where the moc binary is installed. Ideally CMake should be able to use these variables instead of only searching for $QT_INSTALL_BINS/moc or $PATH/moc. Unfortunately these value for these variables can't be extracted with 'qmake-qt4 -query' so I guess a different solution should be searched.. -- You are receiving this mail because: You are on the CC list for the bug. _______________________________________________ mingw mailing list [email protected] https://admin.fedoraproject.org/mailman/listinfo/mingw
