如何解决C++ 协程和 ANDROID 标志
我正在尝试在 android 上使用 asio 和协程集成一个 boost 项目。我在 CMakeLists.txt 文件上使用 set(CMAKE_CXX_FLAGS "-fcoroutines-ts")
(使用了 c++17)。当我设置这个标志时,ANDROID 宏变得未定义。如果我添加 -DANDROID,则协程将被禁用。这两个标志不兼容吗?我可以在带有 NDK 的 Android 上使用 c++ 协程吗?
解决方法
通过设置 CMAKE_CXX_FLAGS
,您将覆盖原始值,该值可能被您正在使用的工具链文件或 CMake 直接设置为包含 -DANDROID
。这里有两种可能:
- 您可以改用
add_compile_options("-fcoroutines-ts")
,这会将标志添加到之后定义的所有目标 - 如果只有一个目标使用协程,您也可以通过
target_compile_options(<target> PUBLIC "-fcoroutines-ts")
或target_compile_options(<target> PRIVATE "-fcoroutines-ts")
设置它,具体取决于您是在该目标的公共标头中使用协程(选择 PUBLIC)还是仅在实施(选择 PRIVATE)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。