0
点赞
收藏
分享

微信扫一扫

【react开发笔记】2024年3月问题总结

罗蓁蓁 04-06 09:30 阅读 3

Bazel和CMake都是用于构建软件项目的工具,但它们之间有一些重要的区别和特点:

  1. Bazel:

    • Bazel是由Google开发的构建和测试工具,用于构建大规模的软件项目。
    • 它采用一种称为“基于规则”的构建系统,它利用构建规则和依赖关系来自动化构建过程。
    • Bazel支持多种编程语言,包括C++、Java、Python等,并提供了高度并行化的构建过程,能够高效地处理大型项目。
    • Bazel具有强大的缓存和增量构建功能,能够快速地重新构建项目,并且在构建结果的可重现性和一致性方面表现出色。
  2. CMake:

    • CMake是一个跨平台的构建系统,用于管理和构建C++项目。
    • 它采用基于文本的CMakeLists.txt文件来描述项目的结构和构建过程,允许开发人员使用简洁的语法定义项目的构建规则。
    • CMake生成特定于平台的构建文件(如Makefile、Visual Studio项目文件等),然后使用相应的构建工具进行实际的构建过程。
    • CMake具有广泛的平台和编译器支持,可以方便地在不同的操作系统和开发环境中使用,并且易于学习和使用。

虽然Bazel和CMake都可以用于构建C++项目,但它们在设计理念、构建方式和功能特性上有所不同。选择使用哪种工具取决于项目的规模、复杂性和团队的偏好,以及所需的特定功能和性能要求。

windows

cmake

在这里插入图片描述

CMakeLists.txt

cmake_minimum_required(VERSION 3.10)

project(Example)

add_executable(Example main.cpp)

main.cpp

#include <iostream>

int main(){
    std::cout<< "hello22" <<std::endl;
    std::cout<< "world22" <<std::endl;
    return 0;
}

终端指令

终端打开该文件夹,输入以下指令

cmake .

在这里插入图片描述

cmake --build .

在这里插入图片描述

cd Debug
.\Example.exe

在这里插入图片描述

bazel

在这里插入图片描述

BUILD

load("@rules_cc//cc:defs.bzl", "cc_binary")

cc_binary(
    name = "hello-world",
    srcs = ["hello-world.cc"],
)

hello-world.cc

#include <ctime>
#include <string>
#include <iostream>

std::string get_greet(const std::string& who) {
  return "Hello " + who;
}

void print_localtime() {
  std::time_t result = std::time(nullptr);
  std::cout << std::asctime(std::localtime(&result));
}

int main(int argc, char** argv) {
  std::string who = "world";
  if (argc > 1) {
    who = argv[1];
  }
  std::cout << get_greet(who) << std::endl;
  print_localtime();
  return 0;
}

终端运行指令

 bazel build hello-world

在这里插入图片描述
找到exe文件运行

 .\bazel-bin\main\hello-world.exe

在这里插入图片描述

Ubuntu

cmake

touch main.c CMakeLists.txt

CMakeLists.txt

cmake_minimum_required (VERSION 2.8)

project (demo)

add_executable(main main.c)

main.c

#include <stdio.h>

int main(void)
{
	printf("Hello World\n");
	return 0;
}

终端指令

cmake build .

找到可执行文件,也就是CMakeLists.txt里面add_executable里面的第一个参数

./main

在这里插入图片描述

…更新中…

举报

相关推荐

0 条评论