gpt4 book ai didi

c++ - qmake 为 win32-g++ 平台生成的 Makefile 包含 unix 命令

转载 作者:可可西里 更新时间:2023-11-01 10:05:34 26 4
gpt4 key购买 nike

我正在尝试使用 Qt 5.4.1 构建交叉编译器,以从 Windows 8.1 64 位计算机生成 Raspberry Pi 可执行文件。

我在 Windows 机器上为 Pi 使用 mingw64 和 gcc 4.9 交叉编译器,我使用的是 Qt 5.4.1 源代码。 PATH 指向 mingw64 二进制文件、gcc 4.9 交叉编译器二进制文件、perl 二进制文件和 %windir%\system32。

我使用以下命令构建 Qt 交叉编译器:

configure.bat -platform win32-g++ -opengl es2 -device linux-rasp-pi-g++ \
-device-option CROSS_COMPILE=arm-linux-gnueabihf- -sysroot \dev\qtxc\sysroot \
-opensource -confirm-license -release -make libs -prefix d:\dev\qtxc \
-platform win32-g++ -xplatform linux-arm-gnueabi-g++

一切正常,直到最后我收到一些包含 Unix 命令的错误消息(同样,我在 Windows 机器上的 Windows 命令提示符下):

Running configuration tests...
process_begin: CreateProcess(NULL, rm -f arch.obj, ...) failed.
make (e=2): The file cannot be found
(...)

然后当我查看生成的 Makefile 时,我可以看到它错误地定义了 Unix 命令而不是 Windows 命令:

# Makefile for building: qt
# Generated by qmake (3.0) (Qt 5.4.1)
# Project: qt.pro
# Template: subdirs
# Command: D:\dev\qtxc\qtbase\bin\qmake -o Makefile qt.pro

MAKEFILE = Makefile

first: make_first
QMAKE = D:\dev\qtxc\qtbase\bin\qmake
DEL_FILE = rm -f
CHK_DIR_EXISTS= test -d
MKDIR = mkdir -p
COPY = cp -f
COPY_FILE = cp -f
COPY_DIR = cp -f -R
(...)

然后,当然,当我尝试按照 configure 命令输出中的指示运行 mingw32-make 时,我收到与 Unix 命令相关的错误消息在 Windows 中不存在:

module-qtbase-qmake_all:  FORCE
@test -d qtbase\ || mkdir -p qtbase\
cd qtbase\ && $(QMAKE) D:\dev\qtxc\qtbase\qtbase.pro -o Makefile
cd qtbase\ && $(MAKE) -f Makefile qmake_all

(当然,@test 在 Windows 中不起作用)。

我已经尝试修改 qtbase\mkspecs\win32-g++\qmake.conf 文件以删除 Unix 条件定义(无论如何将它们放在 win32 文件中似乎是无稽之谈),强制定义QMAKE_SHQMAKE_OS_WIN32,无济于事。

有什么建议吗?

最佳答案

我在设置 Gitlab-CI 运行程序以在 Windows 上编译 Qt 项目时遇到了同样的问题。

使用 -d qmake 上的(调试)选项(参见 Running qmake )我发现 qmake 寻找 sh在 PATH 中,然后通过设置 QMAKE_SH 确定要使用的命令集。

如果您搜索 QMAKE_SH在 qmake 自下而上的调试输出中,您应该找到 qmake 做出上述决定的行。万一sh找到了,进一步向上搜索将带您到实际路径到 sh 的那一行打印出来。

我的是在 Git for Windows ( <path to git>\bin ) 的路径中找到的,因为在 git.exe 旁边的 bin 文件夹中有一个 'sh.exe'。

我为我的特殊情况找到了两个解决方案:

  1. 暂时将 unix 工具添加到 PATH。在 Git for Windows 2.5.3 中,它们位于 <path to git>\usr\bin .
  2. 暂时从 PATH 中删除 sh 的路径。您可以通过发出 SET PATH=%PATH:<path to remove>;=% 来做到这一点到命令行。

关于c++ - qmake 为 win32-g++ 平台生成的 Makefile 包含 unix 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28801754/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com