gpt4 book ai didi

c++ - c++17 的 charconv 是否有 cmake 编译功能?

转载 作者:行者123 更新时间:2023-12-01 14:42:58 25 4
gpt4 key购买 nike

我已经编写了一些使用 c++17 的 charconv 的代码,我可以用 g++ 9 编译得很好。即使我在我的 CMakeLists.txt 中将 std 设置为 c++17,cmake 坚持使用不支持 charconv 的 c++7.5。

如何告诉 cmake 我需要一个支持 charconv 的编译器?我在 CMAKE_CXX_KNOWN_FEATURES 中看不到任何开关。

这是我的 CMakeLists.txt

cmake_minimum_required(VERSION 3.17)

file(GLOB CLIENT_SRC "srcs/*.cpp")
include_directories("includes")

add_executable(client ${CLIENT_SRC})

set_target_properties(client PROPERTIES OUTPUT_NAME "distff-client")

target_compile_features(client PUBLIC cxx_std_17 )

最佳答案

不是 cmake 的人...我真的不明白 cmake 在这里编译功能的方法。但在 C++ 中,一般来说,我们现在使用功能测试宏来检测功能的存在。您正在专门寻找 __cpp_lib_to_chars .

我想你想要编译这个程序:

#if __has_include(<version>)
# include <version>
#elif __has_include(<charconv>)
# include <charconv>
#else
# error "neither <version> nor <charconv> available to test"
#endif

#ifndef __cpp_lib_to_chars
# error "tochars not implemented"
#endif

这可能可以概括为您可以 configure_file() 的任意库功能(只需提取 header 名称和宏名称,并且可能还检查具有所需最小值的宏值(value))。

不管怎样,如果你try_compile()生成的源文件,你可能会得到你想要的行为?

关于c++ - c++17 的 charconv 是否有 cmake 编译功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61444823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com