c++ - 如何强制 Qt QMake 项目使用 C++98 标准?

标签 c++ qt qmake c++98

我在我的 .pro 中试过这个,但它被忽略了:

TEMPLATE = app
CONFIG += console c++98
CONFIG -= app_bundle
CONFIG -= qt

SOURCES += \
        main.cpp

最佳答案

最简单的解决方案是改用 cmake 项目。然后你会:

# CMakeLists.txt
cmake_minimum_required(VERSION 3.1)

project(foo)
add_executable(${PROJECT_NAME} "main.cpp")
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 98)

Qt Creator 支持 cmake 项目,因此对此类项目使用 qmake 不再有优势。毕竟,Qt 依赖是似是而非的——它是对 qmake 的依赖,没有别的,qmake 只与 Qt 的 Base 模块捆绑在一起。

对于 qmake,您必须直接设置编译器标志:

!win32-msvc: QMAKE_CXXFLAGS += -std=c++98

无论您使用什么构建工具,都无法为 MSVC 设置它:这是编译器本身的限制。唯一的方法是使用足够旧的工具集,并有选择地用编译器的名称(而不是路径!)覆盖 QMAKE_CXX。编译器需要位于 PATH 中,即您必须使用工具集的 vsvars 脚本来设置它。

关于c++ - 如何强制 Qt QMake 项目使用 C++98 标准?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50821558/

相关文章:

c++ - 如何检索 QML 相机提要并发送到 C++ 后端

c++ - Qt 应用程序在运行时找不到共享库

c++ - 在 Mingw 64 位上使用 Clang

qt - qmake:使用定义作为条件

c++ - 使用引用和指针对大对象进行运算符重载

c++ - C++编译器如何解释字符串/字符中的比较逻辑?

c++ - 将许多头文件包含在一起而不会产生错误

c++ - while 循环输出中的空内容

java - Android - 发送 HDMI CEC 命令到电视 - minix - libCEC

qt - Qmake - 有 "notcontains"吗?