QMake在makefile中生成奇怪的路径

Posted

技术标签:

【中文标题】QMake在makefile中生成奇怪的路径【英文标题】:QMake generating weird paths in makefile 【发布时间】:2013-10-18 19:28:44 【问题描述】:

我正在使用 Qt 5.1.1 并在 Windows 上运行 qmake。

我使用以下命令运行 qmake:

qmake.exe -spec win32-msvc2012 -tp vc project.pro

不知何故,它在我的 makefile 中生成了一些奇怪的相对路径:

INCPATH = -I"..\..\..\qt\qwt-6.1.0\src"

例如。

我在 .pro 文件中的包含路径如下:

INCLUDEPATH += \
$$PWD \
$$QWTDIR \

我做错了什么? (编译器会搜索......\它肯定是不允许访问的)

qwtdir 定义为:

QWTDIR = C:/qt/qwt-6.1.0/src

【问题讨论】:

好的,具体的问题是什么?你说你做错了什么。错误信息是什么?有问题吗? 使用 MSVC2012 编译时收到错误消息:错误 C1083:无法打开源文件:'..\..\..':权限被拒绝 【参考方案1】:

我解决了这个错误。有人提交了损坏的 .pri 文件,该文件在包含后不包含正确的换行符,即:

HEADERS += \
$$PWD/file1.h \ $$PWD/file2.h

添加适当的换行符解决了这个问题。

【讨论】:

【参考方案2】:

INCLUDEPATH += $$PWD 很可能是不必要的。

您的 $$QWTDIR 很可能是相对的 - 您需要放松并向我们展示它。使用$$absolute_path($$QWTDIR)

您也可以将包含路径全部放在一行上。 INCLUDEPATH 的最后一行的尾行延续是错误的,你必须删除它:

INCLUDEPATH += \
$$PWD \
$$QWTDIR

【讨论】:

qmake 也这样做: -I"..\..\..\qt\Qt5.1.1\5.1.1\msvc2012\include" 我没有在.pro 文件 它需要包含自己的文件,没问题。我相信你的makefile是正确的。请记住,所有路径都相对于生成 Makefile 的构建目录。 我必须运行 qmake 有点“丑陋”。如:C:\FOLDER1\FOLDER2\PROJECT>C:\qt\Qt5.1.1\5.1.1\msvc2012\bin\qmake.exe。你的意思是这就是问题所在? 这很好,除了你在你的源代码中构建,这是不建议的。创建一个空文件夹并执行: C:\PROJECT_BUILD> C:\qt\Qt5.1.1\5.1.1\msvc2012\bin\qmake.exe C:\FOLDER1\FOLDER2\PROJECT\project.pro【参考方案3】:

您正在尝试针对 Qwt 的源代码树进行构建(可能是复制 Qwt 示例的项目文件),而不是正确安装 Qwt 并使用以下命令针对已安装的版本进行构建:

配置 += qwt

见http://qwt.sourceforge.net/qwtinstall.html

【讨论】:

以上是关于QMake在makefile中生成奇怪的路径的主要内容,如果未能解决你的问题,请参考以下文章

在makefile中生成汇编文件

浅谈 qmake 之 shadow build(就是将源码路径和构建路径分开)

Cmake教程

在单独的文件夹中生成依赖文件

在 Python 的类中生成一个数字给我一个奇怪的错误 [重复]

使用 qmake 生成具有 FLTK 流体文件的 makefile?