当前位置: 首页 > news >正文

网站备案核验点 上海数据库网站建设方案

网站备案核验点 上海,数据库网站建设方案,电影介绍网页设计代码,武威建设网站的网站问题描述 我有一个使用 CMake 构建的现有 C/Qt 项目,我想开始添加 Rust 代码,并能够从主 C 代码库中调用这些 Rust 代码。应该如何组织项目结构? 现有项目结构 ./CMakeLists.txt ./subproject-foo/CMakeLists.txt ./subproject-foo/src/..…
问题描述

我有一个使用 CMake 构建的现有 C++/Qt 项目,我想开始添加 Rust 代码,并能够从主 C++ 代码库中调用这些 Rust 代码。应该如何组织项目结构?

现有项目结构
./CMakeLists.txt
./subproject-foo/CMakeLists.txt
./subproject-foo/src/...
./subproject-bar/CMakeLists.txt
./subproject-bar/src/...
./common/CMakeLists.txt
./common/src/...

我想添加一个类似结构的 common-rust/ 目录。

解决方案

为了在 CMake 项目中集成 Rust 代码,可以使用 ExternalProject 模块,它可以用于构建不使用 CMake 的外部依赖项。

Rust 项目设置

假设你有一个 common-rust 子目录,其 Cargo.toml 文件如下:

[package]
name = "rust_example"
version = "0.1.0"[lib]
name = "rust_example"
crate-type = ["staticlib"]

并且在 lib.rs 文件中定义一个函数 add

#[no_mangle]
pub extern fn add(lhs: u32, rhs: u32) -> u32 {lhs + rhs
}
CMake 项目设置

在顶层的 CMakeLists.txt 文件中,可以这样配置:

add_executable(Example cpp/main.cpp)# 启用 ExternalProject CMake 模块
include(ExternalProject)# 设置 ExternalProject 的根目录
set_directory_properties(PROPERTIES EP_PREFIX ${CMAKE_BINARY_DIR}/Rust)# 将 rust_example 添加为 CMake 目标
ExternalProject_Add(rust_exampleDOWNLOAD_COMMAND ""CONFIGURE_COMMAND ""BUILD_COMMAND cargo build --releaseBINARY_DIR "${CMAKE_SOURCE_DIR}/common-rust"INSTALL_COMMAND ""LOG_BUILD ON)# 创建 Example 对 rust_example 的依赖关系
add_dependencies(Example rust_example)# 指定 Example 的链接库
target_link_libraries(Exampledebug "${CMAKE_SOURCE_DIR}/common-rust/target/debug/librust_example.a"optimized "${CMAKE_SOURCE_DIR}/common-rust/target/release/librust_example.a"ws2_32 userenv advapi32)set_target_properties(Example PROPERTIES CXX_STANDARD 11 CXX_STANDARD_REQUIRED ON)

请注意,这里依赖于 Cargo 在路径中可用。

示例 C++ 代码

cpp/main.cpp 文件内容如下:

#include <cstdint>
#include <iostream>extern "C" {uint32_t add(uint32_t lhs, uint32_t rhs);
}int main() {std::cout << "1300 + 14 == " << add(1300, 14) << '\n';return 0;
}
平台依赖

对于非 Windows 平台,需要修改链接的系统库。例如,在 macOS 上需要链接 m, c, System, resolv 库。

另一种方案

可以使用 Corrosion 项目,它简化了 CMake 与 Cargo 项目的集成。在 CMakeLists.txt 文件中添加以下内容:

find_package(Corrosion REQUIRED)
corrosion_import_crate(MANIFEST_PATH ${CMAKE_SOURCE_DIR}/common-rust)
参考资料
  • 使用 ExternalProject 构建外部项目
  • Corrosion 项目 GitHub 页面

这样配置之后,您应该可以成功将 Rust 代码集成到现有的 C++/Qt/CMake 项目中。

http://www.yayakq.cn/news/616592/

相关文章:

  • 大连凯杰建设有限公司网站wordpress4.9免登陆发布接口
  • 京挑客如何做网站推广汽车信息网站设计论文
  • 外贸整合营销网站58同城长沙回收网站建设
  • 淮安维度网站建设巨野菏泽网站建设
  • 公司建设网站费用会计分录网站建设费用评估
  • 国内做设备网站哪些好wordpress grace8
  • 网站优化 代码搜多多搜索引擎入口
  • 国际网站建设招标百度推广竞价技巧
  • 海报模板网站有哪些星空视频大全免费观看下载
  • 人物摄影网站php 上传到网站
  • 北京建机网站网络服务器的分类
  • 网站备案中html菜鸟教程首页
  • 怎么做彩票网站的代理wordpress企业中文模板下载
  • 石家庄站内换乘示意图福田建设网站
  • 手机外贸网站建设东阿网站建设
  • html 门户网站模板零基础企业管理培训课程
  • 哈尔滨网站建站模板做网站优化期间能收到网站吗
  • 城厢区建设局网站做网站代码难么
  • html5网站 源码知名建站的公司
  • 广州站改造最新消息自己做的网站源码如何安装
  • 网站制作杭州自己做博客网站
  • 上海公共招聘网站嘉兴中小企业网站建设
  • 谷歌seo怎么提高网站权重网站标题结构
  • 宁波大型网站推广服务盘锦做网站价格
  • 春季高考网站建设购物网站的文化建设问题
  • 网站建设如果登录失败wordpress固定链接规则文件
  • 全球著名科技网站网站浮动广告怎么做
  • 网站做seo需要哪些准备app开发软件有哪些软件
  • 已经注册了域名怎么做简单的网站濮阳市城乡一体化示范区范围
  • 广州做网站多网站编辑招聘信息