【问题标题】:Windows + VS2019 + CMake + CLion + Conan: How to enable C++20?Windows + VS2019 + CMake + CLion + Conan:如何启用C++20?
【发布时间】:2021-12-27 04:46:46
【问题描述】:

我收到此错误:

C:.conan\7c4aa5\1\include\absl/meta/type_traits.h(622): error C2039: 'result_of': is not a member of 'std'

在尝试编译包含Abseil 的项目时。

如果我点击错误的来源,我会看到:

#if __cplusplus >= 201703L
// std::result_of is deprecated (C++17) or removed (C++20)
template<typename> struct result_of;
template<typename F, typename... Args>
struct result_of<F(Args...)> : std::invoke_result<F, Args...> {};
#else
template<typename F> using result_of = std::result_of<F>;
#endif

顶部有一个提示,std::result_of 在 C++20 中已被删除。

在我的CMakeLists.txt 我有

set(CMAKE_CXX_STANDARD 20)

那么为什么__cplusplus &gt;= 201703L 不是真的呢?是什么设置了这个变量?如何告诉编译器我真的想使用 C++20?

我不知道是否需要说服 Visual Studio 16/2019、CMake、CLion 或其他什么。工具链中的东西太多了,但我会添加一些屏幕截图,这样你就可以看到我的设置是什么,希望有人能指出我缺少的东西。

我完整的CMakeLists.txt 是:

cmake_minimum_required(VERSION 3.21)
set(EXE mario4ever)
project(${EXE})

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

include(${CMAKE_CURRENT_SOURCE_DIR}/conanbuildinfo.cmake)
conan_basic_setup()

add_executable(${EXE} src/bootstrap.cpp)

target_link_libraries(${EXE} ${CONAN_LIBS})

add_custom_command(
        TARGET ${EXE} POST_BUILD
        COMMAND ${CMAKE_COMMAND} -E copy_directory
        ${CMAKE_SOURCE_DIR}/resources $<TARGET_FILE_DIR:${EXE}>/resources
        COMMENT "Copying shaders" VERBATIM
)

【问题讨论】:

    标签: c++ windows visual-c++ cmake conan


    【解决方案1】:

    我刚刚得到它来编译。神奇的线是这样的:

    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++20 /Zc:__cplusplus")
    

    将其添加到CMakeLists.txt

    【讨论】:

    • 仅供参考,柯南中有一套新的构建系统集成,将实现透明集成,请看:docs.conan.io/en/latest/reference/conanfile/tools/cmake.htmlCMakeToolchain应该可以根据柯南设定compiler.cppstd自动定义C++标准。
    • @drodri 实际上我也确实找到并使用了该设置,但无法使其正常工作。将其添加为“个人资料”。
    • 然后,向github.com/conan-io/conan/issues 提交问题可能会很有用(特别是对于新的 CMakeToolchain 集成,因为它是向前发展的一个,cmake 被认为是遗留问题,将在柯南2.0)
    猜你喜欢
    • 2014-12-06
    • 1970-01-01
    • 2021-08-02
    • 2020-06-06
    • 1970-01-01
    相关资源
    最近更新 更多