目前我有一个需要 C++17 的项目,因此在CMakeLists.txt
我很早就有这条线:
set(CMAKE_CXX_STANDARD 17)
从命令行(cmake
)偶尔我想测试该项目是否也可以使用 C++20 进行编译。 (以避免意外)。
如何选择从命令行使用 C++20 进行编译?
If I do cmake -DCMAKE_CXX_STANDARD=20
然后它稍后会被配置覆盖,而不是 17 被解释为最低要求。
我可以检查变量是否是预定义的以避免覆盖,但我正在寻找一种更具声明性的方法来指定它。
(我在 3.18 左右使用 cmake。)
解决方案是删除该 set 命令并使用目标属性:
# set(CMAKE_CXX_STANDARD 17)
target_compile_features(myexecutable PUBLIC cxx_std_17)
然后,设置-DCMAKE_CXX_STANDARD=20
终端上应该可以再次工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)