我在我的中设置以下标志CMakeLists.txt
set(CMAKE_CXX_FLAGS "-std=c++14 -g -O0")
然后我正在使用find_package
定位Qt5Test
find_package(Qt5Test REQUIRED)
然后我正在创建一个模型测试 https://wiki.qt.io/Model_Test library
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)
这肯定会设定每个使用的标准target.
正如评论中所建议的,还应考虑以下因素:
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
See this https://crascit.com/2015/03/28/enabling-cxx11-in-cmake/链接以获取更多详细信息。
感谢@CraigScott 指出了这一点。
正如 @wasthishelpful 的评论中提到的,属性CXX_STANDARD https://cmake.org/cmake/help/latest/prop_tgt/CXX_STANDARD.html, CXX_STANDARD_REQUIRED https://cmake.org/cmake/help/latest/prop_tgt/CXX_STANDARD_REQUIRED.html and CXX_EXTENSIONS https://cmake.org/cmake/help/latest/prop_tgt/CXX_EXTENSIONS.html也可用于每个目标的配置。
请参阅上面的链接了解更多详细信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)