给定一个异步函数及其相应的未来,让我们说:
async fn foo() -> Result<i32, &'static str> {
// ...
}
let my_future = foo();
Run Code Online (Sandbox Code Playgroud)
除了使用 tokio::spawn().await 之外,只使用 .await 等待它有什么区别?
// like this...
let result1 = my_future.await;
// ... and like this
let result2 = tokio::spawn(my_future).await;
Run Code Online (Sandbox Code Playgroud) 在我的 CMake 项目中,我有 2 个共享相同源代码文件的目标(静态库和共享库),如下所示:
add_library("${PROJECT_NAME}" STATIC
"${PROJECT_SOURCE_DIR}/src/calculator/core/ShuntingYard.h"
"${PROJECT_SOURCE_DIR}/src/calculator/core/ShuntingYard.cpp"
"${PROJECT_SOURCE_DIR}/include/calculator/core/Calculator.h"
"${PROJECT_SOURCE_DIR}/src/calculator/core/Calculator.cpp"
)
add_library("${PROJECT_NAME}-shared" SHARED
"${PROJECT_SOURCE_DIR}/src/calculator/core/ShuntingYard.h"
"${PROJECT_SOURCE_DIR}/src/calculator/core/ShuntingYard.cpp"
"${PROJECT_SOURCE_DIR}/include/calculator/core/Calculator.h"
"${PROJECT_SOURCE_DIR}/src/calculator/core/Calculator.cpp"
)
Run Code Online (Sandbox Code Playgroud)
显然,这里存在一个问题:源定义是重复的。它很难维护并且也容易出错。
为了避免这种情况,我想创建一个 CMake 列表变量,以便源定义可以在两个目标中重用。
我已经尝试过这个但它不起作用:
set(CALCULATOR_CORE_SOURCES_LIST
"${PROJECT_SOURCE_DIR}/src/calculator/core/ShuntingYard.h"
"${PROJECT_SOURCE_DIR}/src/calculator/core/ShuntingYard.cpp"
"${PROJECT_SOURCE_DIR}/include/calculator/core/Calculator.h"
"${PROJECT_SOURCE_DIR}/src/calculator/core/Calculator.cpp"
)
string(REPLACE ";" " " CALCULATOR_CORE_SOURCES "${CALCULATOR_CORE_SOURCES_LIST}")
add_library("${PROJECT_NAME}" STATIC ${CALCULATOR_CORE_SOURCES})
add_library("${PROJECT_NAME}-shared" SHARED ${CALCULATOR_CORE_SOURCES})
Run Code Online (Sandbox Code Playgroud)
它失败并出现错误:Cannot find source file.
那么...如何在目标之间重用源文件定义而不进行这种重复?是否可以使用列表来做到这一点,或者是否有更好的方法来解决这个问题?
PS:我使用的是CMake 3.15
我正在开发一个iPhone iOS4应用程序,它必须要做的一件事就是计算2 gps坐标点的距离.
我已经知道Core Location Framework可以从iPhone手机gps返回点数.
好的,但我想知道是否已经有一个方法或函数来计算从核心位置获得的这些点之间的距离.
所以问题是:在任何IO4 SDK框架(核心位置?)中是否有功能/方法可以完成这项工作(计算2 gps坐标点之间的距离)?或者我应该自己实际实现它?