c++协程和ANDROID标志



我正在尝试在android上使用asio和协程集成一个boost项目。我在CMakeLists.txt文件上使用set(CMAKE_CXX_FLAGS "-fcoroutines-ts")(使用c++17)。当我设置这个标志时,ANDROID宏变得未定义。如果我添加-DANDROID,那么协程将被禁用。这两个标志不兼容吗?我可以使用c++协同程序在Android与NDK?

通过设置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)。

最新更新