标签: qmake

在构建qmake项目时如何使用C++ 14功能?

我目前在我的Qt应用程序中使用C++ 11功能.但是,我想在我的应用程序中使用一些新的C++ 14特性.

要在Qt应用程序中启用C++ 11,只需在qmake项目文件中添加一行,即:

CONFIG += c++11
Run Code Online (Sandbox Code Playgroud)

或者对于早期版本:

QMAKE_CXXFLAGS += -std=c++1y
Run Code Online (Sandbox Code Playgroud)

我已经尝试用C++ 14做同样的事情,但它没有用.我改变了上面提到的qmake项目的行,如下所示:

CONFIG += c++14
Run Code Online (Sandbox Code Playgroud)

或者对于早期版本:

QMAKE_CXXFLAGS += -std=c++1y
Run Code Online (Sandbox Code Playgroud)

之后,在尝试构建项目时出现了许多以前不存在的编译错误.该项目编译良好,但是,如果我尝试使用任何C++ 14功能,我会收到编译错误.这是一个例子:

template<typename T>
constexpr T pi = T(3.1415926535897932385);
Run Code Online (Sandbox Code Playgroud)

这是相应的错误:

main.cpp:7: error: template declaration of 'constexpr const T pi'
constexpr T pi = T(3.1415926535897932385);  
          ^
Run Code Online (Sandbox Code Playgroud)

在QtCreator中使用qmake项目时如何启用C++ 14功能?

我使用的是Qt 5.3.2,Qt Creator 3.2.1和MinGW 4.8.2 32位.

c++ qt qmake c++14

22
推荐指数
3
解决办法
3万
查看次数

如何从源代码构建qt

过去几天我在Qt论坛和谷歌上搜索了很多,但我找不到任何明显的答案.

我找到了-prefix可以提供配置来指定不同安装目录的选项(甚至没有记录在Windows上),但这根本不清楚源和二进制文件的分离,因为构建仍然在源目录中完成,然后安装所需的文件将复制到安装程序.我尝试了这个-prefix选项,并遇到了一些问题.(即它不会将.pdb文件复制到安装目录.)

然后我找到了关于进行阴影构建的这个链接,但它有一个很大的限制,即构建目录必须与源目录处于同一级别.


我猜你没试过make install?所以试试吧.它应该将Qt安装到远离源的单独目录中.

你是说我配置后,我应该做nmake安装而不是nmake?我知道nmake将处理来自qmake的生成的makefile并将它们放在源Qt目录中,但是nmake install将完全做什么,即在哪个目录中安装文件以及如何指定文件的安装目录.

请注意,我已经这样做了:

configure -prefix builddir -platform win32-msvc2005
nmake install
Run Code Online (Sandbox Code Playgroud)

上面两行的效果是qt是在源目录中编译的,而不是直接编译到我用前缀指定的builddir.然后编译的文件被复制到我的builddir中.我希望能够将我的Qt文件直接构建到构建目录,因为这样我在编译期间需要4 Gb空间用于源代码.此外,pdb文件未复制到我的buildir,这是另一个问题.

installation qt qmake

21
推荐指数
2
解决办法
3万
查看次数

从我的.pro文件修改CXXFLAGS

可能重复:
在Qt,QtCreator和QMake中配置GCC编译器开关

我想在我的makefile(和)中使用-O1而不是-O2来进行我的Linux构建,但是我对如何基于.pro文件生成这些makefile的理解有些缺乏.这是因为当存在-O2时,Qt的版本与我使用的G ++版本相结合具有不稳定性.CFLAGSCXXFLAGS

目前,在运行qmake之后,我正在运行替换脚本,这样做:

sed -i 's/\-O2/\-O1/g' AllProjects/Makefile.Release
Run Code Online (Sandbox Code Playgroud)

这是一个贫民窟的解决方案.一个更好的解决方案是修改.pro文件以某种方式传递这些指令.我不确定如何生成CFLAGS和CXXFLAGS,我想我会问精彩的StackOverflow.

我试过传递一个

linux-g++-{ 
      CFLAGS += -O1
      CXXFLAGS += -O1
      CONFIG += -O1
}
Run Code Online (Sandbox Code Playgroud)

这没用.

c++ linux qt qmake makefile

21
推荐指数
1
解决办法
3万
查看次数

如何在mac os x上使用g ++编译一个简单的Qt和c ++应用程序?

我正在尝试将Qt用于学校的项目,但遇到了问题.我开始关注教程,我遇到了Makefile问题.大多数教程说要运行qmake -project,然后是qmake最后make.但是当我尝试这个时,我遇到了错误,make: *** No targets specified and no makefile found. Stop.我真的不太了解Makefiles.有人能指点我正确的方向吗?

c++ macos qt qmake makefile

20
推荐指数
2
解决办法
2万
查看次数

如何更改gcc的qmake发布标志?(将-O2更改为-Os)

使用qmake,您可以轻松更改,以便构建调试版本或发行版本.只需修改CONFIG var并更改编译标志即可.

CONFIG += debug
CONFIG += release
Run Code Online (Sandbox Code Playgroud)

当您使用调试时,您将获得-g而不进行优化,并且当您使用release时,您将获得-O2并且没有调试信息(没有-g).

但是指定的是哪里?

让我们说我希望我的应用程序可以通过优化大小来构建,-Os?如何更改"发布"背后的内容?

谢谢

qt qmake

20
推荐指数
1
解决办法
1万
查看次数

如何在QT中从.pro完成编译后执行shell命令?

.pro如果我想执行chmod命令,执行输出二进制文件或执行其他操作,我必须对文件进行哪些更改.

qt qmake

20
推荐指数
1
解决办法
2万
查看次数

如何在.pro文件中检查所选的Qt版本?

我安装了多个版本的Qt,我需要用所有这些版本编译我的项目.
使用专业文件,我在文档中找不到如何进行条件编译.

理想情况下,这就是我想要做的事情:

QT_VERSION = 5   # this can be 4, set manually

if(QT_VERSION == 5) {
   QT += widgets
}
if(QT_VERSION == 4) {
   QT += gui
}
Run Code Online (Sandbox Code Playgroud)

当然,pro文件中不存在if()命令.
有没有更好的方法来做同样的事情?

qt qmake qt4 qtgui qt5

20
推荐指数
4
解决办法
2万
查看次数

qmake项目文件中的INCLUDEPATH不起作用

我在qmake项目中遇到了包含问题.在我的.pro文件中,我得到了:

INCLUDEPATH += "C:\OpenCV\build\include"
Run Code Online (Sandbox Code Playgroud)

在我的cpp中:

#include <opencv\cv.h>
Run Code Online (Sandbox Code Playgroud)

编译器指示错误:

无法打开包含文件:'opencv\cv.h':没有这样的文件或目录

但如果我在我的cpp中写这个:

#include "C:\OpenCV\build\include\opencv\cv.h"
Run Code Online (Sandbox Code Playgroud)

有用!

我在Qt Creator中构建项目.我究竟做错了什么?

qt qmake qt-creator

20
推荐指数
3
解决办法
4万
查看次数

在Qt/Qmake中构建多个目标

如何在Qt中指定具有不同配置的多个目标?有没有办法在一个.pro文件中执行此操作?

例如,我想构建以下2个.pro文件(无需每次都手动更改.pro文件):

targetA:

QT += network
TEMPLATE = app
SOURCES += main.cpp \
    mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
RESOURCES += resource.qrc

TARGET = targetA
DEFINES += PARAMA
Run Code Online (Sandbox Code Playgroud)

targetB:

  QT += network
  TEMPLATE = app
  SOURCES += main.cpp \
      mainwindow.cpp
  HEADERS += mainwindow.h
  FORMS += mainwindow.ui
  RESOURCES += resource.qrc

  TARGET = targetB
  DEFINES += PARAMB
Run Code Online (Sandbox Code Playgroud)

qt qmake

19
推荐指数
2
解决办法
1万
查看次数

QMAKE:QMAKESPEC尚未确定

我最近重新编译了Qt,以便我可以使用静态而不是共享库.但是现在,当我尝试编译我的项目时,我收到以下错误:

QMAKESPEC尚未设置,因此无法推断配置.

这似乎是一个常见的问题,我在发布之前做了一些研究.让我感到困惑的是,我确实设置了QMAKESPEC env var.这是printenv QMAKESPEC的输出

/usr/local/Trolltech/Qt-4.4.0/mkspecs/linux-g++

此外,这是qmake -query QMAKESPEC的输出

Linux的克++

我也试过玩这些值,但似乎qmake根本看不到那个变量...... QTDIR也被正确指定了.

我也尝试重新编译Qt并重新安装它.

谢谢你的帮助.

qt qmake

19
推荐指数
2
解决办法
4万
查看次数

标签 统计

qmake ×10

qt ×10

c++ ×3

makefile ×2

c++14 ×1

installation ×1

linux ×1

macos ×1

qt-creator ×1

qt4 ×1

qt5 ×1

qtgui ×1