为Qt应用程序编写特定于windows的.pri文件

为Qt应用程序编写特定于windows的.pri文件,qt,qmake,Qt,Qmake,我正在尝试在Windows8.1上构建Qt5.5应用程序。我设法在Ubuntu 14.04和MacOS 10.10.2上构建了相同的应用程序 以下是.pri文件现在的样子:。 它同时支持unix和mac。我也尝试添加windows支持,但不起作用。看起来是这样的: win32 { INCLUDEPATH += $$PWD \ C:/Program Files (x86)/PCL 1.7.2/3rdParty/Boost/include/boost-1_57 \ C:/opencv/

我正在尝试在Windows8.1上构建Qt5.5应用程序。我设法在Ubuntu 14.04和MacOS 10.10.2上构建了相同的应用程序

以下是.pri文件现在的样子:。 它同时支持unix和mac。我也尝试添加windows支持,但不起作用。看起来是这样的:

win32 {

INCLUDEPATH += $$PWD \
   C:/Program Files (x86)/PCL 1.7.2/3rdParty/Boost/include/boost-1_57 \
   C:/opencv/build/include

LIBS += -L/C:/opencv/build/x86/vc12/lib \
   -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_features2d -lopencv_ml \
   -lboost_thread-mt -lboost_system-mt

LIBS += -L/C:/Program Files (x86)/PCL 1.7.2/3rdParty/Boost/lib \
   -lboost_thread-mt -lboost_system-mt

}
我对这个很陌生,我确信它在语法上是不正确的,但应该是类似的。任何人都可以给我一些提示或帮助将不胜感激

例如,$$PWD和-L是什么

运行make后出现错误:

cd tests\test_galif\&(如果不存在)Makefile C:\Qt\Qt5.5.1\5.5\msvc2013\bin\q make.exe C:\Users\Concordia\Documents\OpenSSE\OpenSSE master\tests\test\u galif\te st_galif.pro-o Makefile)和&make-f Makefile make[1]:输入 目录
C:/Users/Concordia/Documents/OpenSSE/OpenSSE master
/tests/test_galif'make-f Makefile.Release make[2]:输入
目录
C:/Users/Concordia/Documents/OpenSSE/OpenSSE master /tests/test_galif'Makefile.Release:106:*缺少分隔符。停止 make[2]:离开目录
C:/Users/Concordia/Documents/OpenSSE/OpenSSE-master/
测试/测试生成[1]:***[release]错误2生成[1]:离开
目录
C:/Users/Concordia/Documents/OpenSSE/OpenSSE master/ 测试/测试加利夫品牌:
[子测试-测试加利夫-品牌第一]错误2


cmd
Windows控制台中,不应找到工具
make

“make”不被识别为内部或外部命令,可操作 程序或批处理文件

如果发现
make
,它来自某个国外安装(可能来自Cygwin)
qmake
from
msvc2013
Qt安装默认情况下应为Visual Studio
nmake
生成Makefiles

应从具有适当生成环境的适当命令提示符(
%PATH%
变量)启动从控制台生成。对于32位编译,它应该是
x86
命令提示符:

Programs->Visual Studio 2013->Visual Studio Tools->VS2013 x86 Native Tools Command Prompt
从该控制台应该可以运行
nmake
和相应的编译器

它应该有助于解决Makefile错误。可能还有其他编译器或链接器错误,但只有在正确的构建环境下,才能通过适当的make工具来显示它们


通常,如果由于某行上的Makefile格式(例如
Makefile.Release:106
)而报告了某些错误,则可能需要检查该行中出现错误的原因


要正确编译,必须引用带有空格的标题路径:

INCLUDEPATH += "C:/Program Files (x86)/PCL 1.7.2/3rdParty/Boost/include/boost-1_57"

链接器的库路径可以通过
-L
后跟路径来设置。必须引用带空格的路径,以便正确链接:

LIBS += -L"C:/Program Files (x86)/PCL 1.7.2/3rdParty/Boost/lib"
为了完整性,请注意,使用较旧Qt版本的带有空格的路径可能存在其他问题
但是,Qt5.5.1不受该问题的影响。

您的错误是什么?什么是Qt版本<代码>$$PWD指向项目目录
-L
用于链接器库路径(不带斜杠
-LC:/…
或,还引用了
-L“C:/…”
)。您正在链接使用vc12编译的opencv(visual studio 2013)。Qt也是用vc12构建的吗?嗨,我添加了Qt版本(5++),运行make.Qt后的错误输出是通过他们网站上提供的安装程序(开源版本)安装的。但是include和bin文件夹位于msvc2013文件夹下。您从哪里获得
make
?它不应该在这里。你如何建立你的项目?如果它是从控制台构建的,那么它应该从MSVC控制台构建,并且应该使用
nmake
代替
make
。感谢您的详细解释。我会尽快尝试!有了你的解释和对MSVC+nmake和Qt的一些研究,我终于能够构建这个应用程序了!