问题描述
我在我的 CMakeLists.txt
set(CMAKE_CXX_FLAGS "-std=c++14 -g -O0")
使用 find_package
找到 Qt5Test
find_package(Qt5Test REQUIRED)
然后我创建一个库
add_library (modeltest STATIC ${SRCS})
target_link_libraries(modeltest Qt5::Test)
某些原因我得到 -fPIC -std = gnu ++ 11
添加到我的编译器标志
For some reason I'm getting -fPIC -std=gnu++11
added to my compiler flags
CMakeFiles/modeltest.dir/flags.make:CXX_FLAGS = -std=c++14 -g -O0 -fPIC -std=gnu++11
这破坏了我的 -std = c ++ 14
标志,导致所有的c ++ 14功能在我的程序,最终作为编译器错误:
This is clobbering my -std=c++14
flag, causing all the c++14 features in my program to end up as compiler errors:
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
。
改为使用:
Do not set CMAKE_CXX_FLAGS
explicitly.
Use this instead:
set(CMAKE_CXX_STANDARD 14)
设置用于每个目标的标准。
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
查看链接了解更多详情。
感谢@CraigScott指出了这一点。
See this link for further details.
Thanks to @CraigScott for that pointed it out.
如@wasthishelpful的评论中所述,属性,和也可用于每个目标配置。
有关详细信息,请参阅上面的链接。
As mentioned in the comments by @wasthishelpful, properties CXX_STANDARD
, CXX_STANDARD_REQUIRED
and CXX_EXTENSIONS
can also be used for a per-target configuration.
See the links above for further details.
这篇关于Qt 5.7添加-std = gnu ++ 11到我的编译器标志,clobbering -std = c ++ 14的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!