gpt4 book ai didi

c++ - Qt 5.7 将 -std=gnu++11 添加到我的编译器标志,破坏 -std=c++14

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:15:44 26 4
gpt4 key购买 nike

我在我的 CMakeLists.txt

中设置了以下标志
set(CMAKE_CXX_FLAGS "-std=c++14 -g -O0")

然后我使用 find_package 找到 Qt5Test

find_package(Qt5Test REQUIRED)

然后我正在创建一个 Model Test图书馆

add_library          (modeltest STATIC ${SRCS})
target_link_libraries(modeltest Qt5::Test)

出于某种原因,我将 -fPIC -std=gnu++11 添加到我的编译器标志中

CMakeFiles/modeltest.dir/flags.make:CXX_FLAGS = -std=c++14 -g -O0 -fPIC -std=gnu++11

这破坏了我的 -std=c++14 标志,导致我程序中的所有 c++14 功能最终都变成了编译器错误:

error: ‘foo’ function uses ‘auto’ type specifier without trailing return type
constexpr auto foo()
^
note: deduced return type only available with -std=c++14 or -std=gnu++14
  • 有办法解决这个问题吗?
  • 我使用的是今天从他们网站下载的最新版 Qt 5.7

最佳答案

不要显式设置CMAKE_CXX_FLAGS
改用这个:

set(CMAKE_CXX_STANDARD 14)

这肯定会为每个目标设定标准。


正如评论中所建议的,还应考虑以下内容:

set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

参见 this链接以获取更多详细信息。
感谢@CraigScott 指出这一点。


正如@wasthishelpful 在评论中提到的,属性 CXX_STANDARD , CXX_STANDARD_REQUIREDCXX_EXTENSIONS也可以用于每个目标的配置。
有关详细信息,请参阅上面的链接。

关于c++ - Qt 5.7 将 -std=gnu++11 添加到我的编译器标志,破坏 -std=c++14,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40795474/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com