【问题标题】:Can't build Qt in Windows from source, Perl installed but still can't find headers无法在 Windows 中从源代码构建 Qt,安装了 Perl 但仍然找不到标头
【发布时间】:2012-10-24 10:34:11
【问题描述】:

我在 Windows 7 64 位上使用 Cygwin。我下载了4.8.3。源并按照说明here,将<qtdir>/bin 连同我选择的编译器的路径一起放入PATH。配置立即失败,

$ ./配置

创建 qmake。请 等等... g++ -c -o makefile.o -pipe -DQMAKE_OPENSOURCE_EDITION -g -I。 -Igenerators -Igenerators/unix -Igenerators/win32 -Igenerators/mac -Igenerators/symbian -Igenerators/integrity -I/cygdrive/c/Qt/4.8.3/include -I/cygdrive/c/Qt/4.8.3/include /QtCore -I/cygdrive/c/Qt/4.8.3/src/corelib/global -I/cygdrive/c/Qt/4.8.3/src/corelib/xml -I/cygdrive/c/Qt/4.8.3 /工具/共享-DQT_NO_PCRE -DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED -DQLIBRARYINFO_EPOCROOT -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_STL -DQT_NO_COMPRESS -I / cygdrive / C / QT / 4.8.3 / mkspecs / cygwin的-G ++ -DHAVE_QCONFIG_CPP -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DEPRECATED生成器/makefile.cpp

在 ./option.h:45:0 包含的文件中, 来自生成器/makefile.h:45, 来自 generators/makefile.cpp:42: ./project.h:45:25: 致命错误: qstringlist.h: 没有这样的文件或目录编译 终止。 make: *** [makefile.o] 错误 1

herehere 的讨论指出问题出在 Perl 上;但是 Perl 在我的系统和路径上。为了确保我去下载/安装了 ActivePerl,然后我将Perl64/bin 添加到路径中。结果相同。非常感谢您对此提供帮助。

编辑,为了完整性:

$ whereis perl

perl: /bin/perl.exe /usr/bin/perl.exe /usr/share/perl /cygdrive/c/Perl64/bin/perl.exe /cygdrive/c/Perl64/bin/perl516.dll

$ 回声 $PATH

/cygdrive/c/Perl64/bin:/cygdrive/c/gcc/bin:/bin: ... /cygdrive/c/Qt/4.8.3/bin

编辑:失败的行是:

#include <qstringlist.h>

如果我用绝对路径替换,这个特定的错误就会消失。 (当然,还会出现许多其他错误。)然而

$whereis qstringlist.h

qstringlist: /cygdrive/c/Qt/4.8.3/include/QtCore/qstringlist.h

在 g++ 命令和 FWIW 中明确包含 -I

$echo $PATH

... /cygdrive/c/Qt/4.8.3/include/QtCore

编辑:-I/cygdrive/c/Qt/4.8.3/include/QtCore 作为显式选项添加到./configure 没有任何作用。说真的,这是怎么回事……

更新:这个问题现在实际上值得 250 次重复,请参阅 here

【问题讨论】:

  • 对我来说问题似乎是编译器设置为 cygwin-g++ 并且它抱怨它不知道如何为这种类型的编译器创建项目
  • @MihaiSebea 确实我正在尝试在 cygwin-g++ 下编译,但您能否解释一下您认为问题出在哪里? cygwin-g++ 包含在 Qt 的 mkspecs 目录中。此外,无论我是否包含-platform cygwin-g++,都会发生这种情况,我希望mingw 是默认值。
  • Phillis 据我所知,cygwin 仅在 linux 下受支持。lists.qt.nokia.com/pipermail/qt-interest/2009-September/… 因为在 Windows 上不支持不同的文件夹结构。
  • @MihaiSebea cygwin.com Cygwin 是一个 Windows 程序。

标签: windows qt build cygwin configure


【解决方案1】:

您使用的确切配置行是什么?试试这个:

./configure -I/cygdrive/c/Qt/4.8.3/include/

如果它仍然抱怨找不到标题,那确实很奇怪。您可以尝试的另一个选择是:

INCLUDE_PATH=/cygdrive/c/Qt/4.8.3/include/ ./configure

【讨论】:

    【解决方案2】:

    请查看supported platforms,那里有关于支持的编译器的说明,可以为您提供有关问题的提示。

    据我所知,在最近的 Windows 中,您需要 MSVC,而我没有看到任何关于 cygwin 的信息。

    【讨论】:

    • 这个我没看过,挺有意思的。但是,最终您应该能够从任何编译器的源代码构建 Qt,不是吗?因此,他们没有专门针对 g++ 对其进行测试这一事实并不意味着您不应该这样做。在安装说明中,他们专门讨论了如何选择替代平台。你不能让 g++ 看到 qstringlist.h 所在的路径,这很难相信。
    • 顺便说一句,您是否只使用了普通的 ./configure 或使用了任何修饰符?检查:qt-project.org/doc/qt-4.8/configure-options.htmlqt-project.org/doc/qt-4.8/install-win.html。例如:configure -platform win32-g++
    • 是的,我为 -platform 选项提供了 cygwin-g++ 或 win32-g++ 参数并获得了上述结果。 ./configure 可能默认为其中之一。
    • 和./configure.exe?这里有人说这对他有帮助:osdir.com/ml/MinGW-users/2012-04/msg00092.html
    • @kikeenrique 9 年后,只想说声谢谢。在为这个问题苦苦挣扎了一周并且在任何地方都没有找到答案之后,追踪 configure.exe 并使用它而不是脚本终于有所帮助。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-05
    相关资源
    最近更新 更多