【发布时间】:2017-04-09 07:02:05
【问题描述】:
我在 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
【问题讨论】:
-
当然有“解决这个问题的方法”——在极端情况下,您可以使用正确的标志手动编译每个目标文件。问题应该是“what 是解决这个问题的方法”。我(不幸的是)不知道答案,但它必须位于您的构建系统中的某个位置以及您如何聚合编译器参数..
-
@skypjack 啊!这绝对敲响了警钟!我现在不在我的电脑前,但会尝试一下并告诉你。谢谢!