cmake 只编译更新的文件_CMake编译C++17文件的跨平台写法

本文介绍了如何使用CMake编译C++17标准的文件,并强调了正确配置的重要性。内容包括在VS2019和GCC9.3.0环境下编译的正确与错误示例,确保代码在不同平台上得到正确编译和运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c++标准每天都在进化,以至于老旧的c++和新的c++可能是不同的语言。为了不至于被历史的车轮抛弃太远,这里简单介绍一下,用CMake编译C++17文件的写法:

25431f47383fdfeb465974d56df6e24c.png
if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
    set( my_std_pre "/std:" )
else()
    set( my_std_pre "-std=" )
endif()

set( basic_cxx17 "c++17" )
set( str_cxx17 "${my_std_pre}${basic_cxx17}" )

include( CheckCXXCompilerFlag )
check_cxx_compiler_flag( "${str_cxx17}" _cpp_17_flag_supported )
if ( _cpp_17_flag_supported )
    set( CMAKE_CXX_STANDARD 17 )
 endif()

上述代码在vs2019和gcc9.3.0测试通过。

在vs2019下,不这么做的后果是:

e3c5bc71098a8f85a77c014efeb1080d.png

d9a074e0d41cb9664863cb10992aa572.png

正确的编译结果是:

ecc85bb1be5bae4fcf5623d85e375113.png

运行如下:

97415a483109df370436c514d0c6bd48.png

在gcc9.3.0下,错误的编译结果为:

d75e5abf5371022795d7b8fa3221a575.png

正确的编译结果为:

0e2096b3791c37f8db4b3a0d4f0d4252.png

运行结果为:

84342b64fcbf6d6c1a18f1fb4c974908.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值