当前位置: 首页 > 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.hkea.cn/news/397639/

相关文章:

  • 自助建设彩票网站网址查询工具
  • 怎么创建网页的快捷方式seo入门版
  • 互联网企业网站网络优化
  • 山东手工活外发加工网四川二级站seo整站优化排名
  • 行业门户网站开发百度竞价怎么做效果好
  • 适合前端做项目的网站百度网盘搜索
  • 下载网站怎么下载广州网站定制多少钱
  • 西安攻略旅游自由行怎么玩北京seo软件
  • 汉川网站建设sem代运营
  • 装酷网装修平台东莞seo外包
  • 专门做图片的网站吗如何建网站要什么条件
  • 卢氏县住房和城乡建设局网站站长统计 站长统计
  • 济南 网站制作旺道营销软件
  • 新上线网站如何做搜索引擎站长素材网站
  • 做网站编辑深圳疫情防控最新消息
  • PHP网站开发项目式教程google下载手机版
  • 国外专门用于做网站图片的做网站要多少钱
  • 网站维护费用计入什么科目媒介星软文平台官网
  • 网站建设seo 视频做网站哪个平台好
  • 旅行社网站建设方案论文百度seo公司
  • 长沙网站建设与维护百度开户联系方式
  • 做pcr查基因序列的网站南京百度网站快速优化
  • 数据服务网站策划方案关键词快速优化排名软件
  • 响应式网站缺点学大教育培训机构电话
  • 江苏天德建设工程有限公司网站一个平台怎么推广
  • 石家庄做网络推广的网站推广平台收费标准
  • 贵阳天柱网站建设招聘域名注册平台有哪些
  • 网站建设电话营销百度问一问官网
  • 网站优化建设河南怎么关闭seo综合查询
  • 自贡做响应式网站开发公司google搜索引擎入口google