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

linux 配置cpp环境 测试

安装 g++、gcc、make 等完整工具链
sudo apt update
sudo apt install build-essential -y
sudo apt-get install cmake -y
sudo apt install gdb -y

编译
g++ hello.cpp -o hello
./hello

显示所有警告
g++ -Wall -Wextra hello.cpp -o hello

包含调试信息(用于gdb调试)
g++ -g hello.cpp -o hello

O1 优化
g++ -O1 hello.cpp -o hello

O2 优化(常用)
g++ -O2 hello.cpp -o hello

O3 最大优化
g++ -O3 hello.cpp -o hello

编译多个文件
g++ main.cpp functions.cpp -o myprogram
./myprogram

使用cmake

CMakeLists.txt 文件

#CMakeLists.txt# 设置:版本cmake_minimum_required(VERSION3.20)# 定义:项目名称project(first_cmake)# 变成执行程序 # 参数:项目名字、源码名字、add_executable(first_cmake first_cmake.cpp)

first_cmake.cpp 文件

#include<iostream>usingnamespacestd;intmain(){cout<<"Hello, World!"<<endl;return0;}

run.sh 文件

# 使用下面步骤代替第一步,原因是有些cmake版本不支持(-S -B)参数mkdirbuildcdbuild cmake..cd../# 下面一样cmake --build build ./build/first_cmake

若使用vscode
配置如下
使用方式:
快速运行:Ctrl+Shift+B
调试:F5

launch.json

{"version":"0.2.0","configurations":[{"name":"调试程序","type":"cppdbg","request":"launch","program":"${workspaceFolder}/build/first_cmake","args":[],"stopAtEntry":false,"cwd":"${workspaceFolder}","environment":[],"externalConsole":false,"MIMode":"gdb","setupCommands":[{"description":"为 gdb 启用整齐打印","text":"-enable-pretty-printing","ignoreFailures":true}],"preLaunchTask":"编译"}]}

tasks.json

{"version":"2.0.0","tasks":[{"label":"编译","type":"shell","command":"cd${workspaceFolder}&& mkdir -p build && cd build && cmake .. && make","group":"build"},{"label":"编译并运行","type":"shell","command":"cd${workspaceFolder}&& mkdir -p build && cd build && cmake .. && make && echo '=== 运行程序 ===' && ./first_cmake","group":{"kind":"build","isDefault":true}}]}
http://www.jsqmd.com/news/91361/

相关文章:

  • 终极排查指南:Typst列表符号异常完全解决手册
  • 告别单调代码!Dayle Rees配色方案打造高效编程视觉体验
  • 17、Samba与BIND:文件共享与域名服务配置指南
  • Umami主题定制深度指南:从界面诊断到个性化解决方案
  • 18、BIND 区域文件编写与域名服务器配置全攻略
  • 19、域名管理与Dnsmasq的实用指南
  • 20、域名与数据库操作指南
  • 21、数据库与邮件服务配置指南
  • 18、命令行选项与类型化变量详解
  • 22、构建本地 POP3/SMTP 邮件服务全攻略
  • 23、邮件服务与Apache服务器配置指南
  • 19、整数变量、算术运算与数组的深入解析
  • GetDataFromSteam-SteamDB:3步掌握Steam游戏数据抓取全攻略
  • 20、输入/输出与命令行处理
  • ERNIE 4.5:3000亿参数异构MoE模型如何重塑企业AI格局
  • 21、深入理解Shell中的字符串输入输出与命令行处理
  • 22、命令行处理:引用、内置命令与 eval 的使用
  • 23、UNIX 系统中的进程处理与控制详解
  • 终极像素字体完全指南:从零到精通快速上手
  • 深度拆解:OrcaSlicer 5大核心模块架构与实战指南
  • 5个顶级Flutter示例项目,从零基础到架构师实战指南
  • Charticulator终极指南:快速掌握交互式图表设计与数据可视化
  • 24、UNIX 系统进程处理与信号控制全解析
  • 突破水下迷雾:3DGS技术实现清晰水下场景重建全解析
  • 键盘大师:Windows效率革命的终极指南
  • Bruno终极指南:5步掌握开源API测试工具的核心功能
  • Bruno完美兼容Postman:一键解决API集合导入的大小写标准化难题
  • Firebase App Distribution内测分发:移动应用测试的革命性升级
  • 38亿参数多模态模型Jina Embeddings v4发布:重新定义智能检索范式
  • 漫画格式转换新手指南:轻松实现PDF与CBZ/CBR互转