• 在cargo run某个项目时出现了如下错误:error: failed to run custom build command for ring v0.16.20(无法运行“Ring v0.16.20”的自定义构建命令),在PowerShell命令行运行命令 rustup override set stable-msvc后成功运行。

  • override set 是 rustup 提供的子命令,用于设置当前目录或项目的 Rust 工具链版本。

  • 感觉和CMake中的以下代码中的配置类似,其将编译器设置为了MSVC以进行代码生成。

  • 这是由于Windows多使用MSVC(Microsoft Visual C++编译器,MSVC只支持Windows平台)而linux中多用GCC(GNU Compiler Collection,GCC可以跨平台,但是可能代码中存在特定于某个编译器的代码比如有#ifdef _MSC_VER,然后才能执行对应的函数)

// CMake管理项目,CMakeLists.txt根据需要选择使用MSVC或者GCC作为编译器
cmake_minimum_required(VERSION 3.0)
project(MyProject)

# 设置使用MSVC或者GCC编译器
if(MSVC)
    # 设置MSVC特定的选项
    add_compile_options(/W4 /WX)
    message("MSVC")
elseif(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCC)
    # 设置GCC特定的选项
    add_compile_options(-Wall -Wextra -pedantic -Werror)
    message("GCC")
else()
    message(FATAL_ERROR "Unsupported compiler. Please use MSVC or GCC.")
endif()

set(CMAKE_CXX_STANDARD 11)  # 设置C++标准为C++11
set(CMAKE_C_STANDARD 99)    # 设置C标准为C99

# 添加可执行文件
add_executable(MyExecutable main.cpp)
  • 运行如下
ubuntu@DESKTOP-D7DRBER:~/CODE/TestCMAKE/build$ cmake ../
GCC
-- Configuring done
-- Generating done
-- Build files have been written to: /home/ubuntu/CODE/TestCMAKE/build
ubuntu@DESKTOP-D7DRBER:~/CODE/TestCMAKE/build$ make
Scanning dependencies of target MyExecutable
[ 50%] Building CXX object CMakeFiles/MyExecutable.dir/main.cpp.o
[100%] Linking CXX executable MyExecutable
[100%] Built target MyExecutable
ubuntu@DESKTOP-D7DRBER:~/CODE/TestCMAKE/build$ ./MyExecutable 
Hello, CMake!

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部