【问题标题】:QT5 attaching project name with every sourcefile name, compiling errorQT5在每个源文件名中附加项目名称,编译错误
【发布时间】:2013-02-27 20:36:38
【问题描述】:

我想开始使用 QT。我用 QT creator 下载了 QT5 MINGW 编译器,我正在尝试构建名为 affine 的预附加示例,问题是我认为 QT5 将项目名称与每个源代码一起嵌入文件,从而给出找不到文件的错误。类似的东西

    :-1: error: ..affinemain.cpp: No such file or directory

而文件名只是

    main.cpp 

我不知道如何解决它。我在互联网上搜索了很多,但找不到任何有用的东西。 我什至尝试从命令提示符编译,但我不熟悉命令提示符编译,因为我是 QT 新手,以前我完全使用 Visual Studio 中的 IDE 和 java 的 Eclipse 开发,所以我不知道 make 文件和编译器命令行参数。 有人可以帮我解决这个问题吗,你能告诉我为什么编译器将项目名称与源文件名附加在一起吗? 在此先感谢

【问题讨论】:

    标签: c++ qt compiler-errors qt5


    【解决方案1】:

    我遇到了同样的问题,我的解决方案可能会对你有所帮助。

    我现在正在使用 Qt5.0.1,并且有两个发行版可以在 Windows 上使用它:Qt5.0.1-mingw 和 Qt5.0.1-msvc2010。 我不得不使用 mingw,但我的设置存在一个问题,即路径中的“/”被忽略了。

    所以根据Qt Creator,编译器被调用来处理文件mainwindow.cpp,这个文件被传递给它

    g++ /*truncated*/ ..\qt-example\mainwindow.cpp
    

    以下是完整的编译器输入:

    g++ -c -pipe -fno-keep-inline-dllexport -g -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_OPENGL_ES_2 -DQT_OPENGL_ES_2_ANGLE -DQT_NEEDS_QMAIN -I..\qt-example -I"..\..\..\..\..\..\Qt\Qt5.0.1\5.0.1\mingw47_32\include" -I"..\..\..\..\..\..\Qt\Qt5.0.1\5.0.1\mingw47_32\include\QtWidgets" -I"..\..\..\..\..\..\Qt\Qt5.0.1\5.0.1\mingw47_32\include\QtGui" -I"..\..\..\..\..\..\Qt\Qt5.0.1\5.0.1\mingw47_32\include\QtCore" -I"debug" -I"." -I"." -I"..\..\..\..\..\..\Qt\Qt5.0.1\5.0.1\mingw47_32\mkspecs\win32-g++" -o debug\mainwindow.o ..\qt-example\mainwindow.cpp
    

    并且产生了错误。

    g++.exe: error: ..qt-examplemainwindow.cpp: No such file or directory
    g++.exe: fatal error: no input files
    compilation terminated.
    

    所以,我们可以看到“\”被编译器忽略了,文件名和目录名合并了。

    该问题的解决方案是使用的工具 - MinGW(GCC 和 Binutils 的极简端口)。还有MSYS - 一组 GNU 实用程序,如 bash、make、gawk 和 grep,允许构建依赖于传统 UNIX 工具的应用程序和程序。在我们的例子中 - g++。

    MSYS 没有随 Qt5.0.1-mingw 提供,g++ 也没有使用它,但是在 PATH 环境变量中提供 MSYS 会破坏系统。

    MSYS is used 用于我已安装的 git scm,因此我的路径包含与 git 捆绑的 MSYS 的链接。所以我的 PATH 环境变量中有下一条路径。

    C:\Program Files (x86)\git\bin;C:\Program Files (x86)\git\cmd
    

    我还没有找到 Qt Creator 或 g++ 如何使用 MSYS,或者它的链接位置,但是当我从 PATH 中删除了下一个路径时:

    C:\Program Files (x86)\git\bin;
    

    并重新启动 Qt Creator - g++ 成功编译了我的文件,它工作正常。 为什么/如何影响不应使用与 git 一起安装的 MSYS utils 的 Qt Creator/g++ 的问题仍然悬而未决。

    【讨论】:

    • MinGW(-w64) GCC 不需要 MSYS。您不应该将 msysgit/bin 添加到系统范围的 PATH 中。删除它,在您重新运行 qmake 后,您可能会有更多的运气。 MSYSgit 应该安装 git Bash 的快捷方式,它无需任何 PATH 修改即可工作。如果您想使用 cmd 中的基本 git 命令,请将 ../git/cmd 部分保留在 PATH 中。
    • 对,MSYS 不是必需的,但问题是它为什么/如何破坏 g++。因为它确实打破了它。我没有故意添加“sysgit/bin”——它们是在安装过程中默默添加的。正如我所说,git(在 Console2 中)和 qmake 都可以在没有它们的情况下工作。将 '../git/cmd' 添加到 PATH 以使 git 从 cmd 运行是一件好事。我会将其添加到答案中。谢谢。
    • 你从哪里得到你的 msysgit?每次我安装它时,它都提供了向 PATH 添加 git/bin、git/cmd 或不添加任何内容的选择,并带有关于将 git/bin 添加到 PATH 的大警告。
    • 我很久以前就从官方网站安装了它,所以我现在不记得所有细节了。不过我刚刚从code.google.com/p/msysgit/downloads/…下载了最新版的Git(1.8.1.2),试了一下。你是对的 - 它提供了一个选择。带有大红色警告:-) 谢谢。
    【解决方案2】:

    我不能评论。

    重要:在尝试作者的提示之前删除release和debug文件夹(编译版)中的所有文件...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-01
      • 1970-01-01
      • 2010-09-19
      • 1970-01-01
      相关资源
      最近更新 更多