使用gn创建HelloWorld工程

使用gn创建HelloWorld工程

1. 研究chromium自带的HelloWorld工程

我们在src根目录下找到【test】目录,此目录下存在2个文件

BUILD.gn
hello_world.cc

查看文件内容

// BUILD.gn 内容如下
executable("hello_world") {
	sources = [
		"test.cpp", // 这里有点不对,应该是下面的hello_world.cc,因为test.cpp根本不存在
	]
}

// hello_world.cc 内容如下
#include <iostream>
int main()
{
	std::cout << "hello world" << std::endl;
	return 0;
}

分析内容

  • 【BUILD.gn】是编译脚本
    • executable是指生成exe的名字
    • source是指源码文件列表,相对目录
  • 【hello_world.cc】是源码文件

2. 动手写一个自己的HelloChromium

我们在src根目录下创建【hello_chromium】目录,并将test目录下的2个文件拷贝过来,并修改为如下名称

BUILD.gn
hello_chromium.cc

修改文件内容

// BUILD.gn 内容如下
// 特别提醒json的格式化必须使用空格不能使用tab,要不然执行脚本就会报错,WTF!!!!
executable("hello_chromium") {
 sources = [
  "hello_chromium.cc",
 ]
}

// hello_chromium.cc 内容如下
#include <iostream>
int main()
{
	std::cout << "hello chromium." << std::endl;
	return 0;
}

修改src根目录下BUILD.gn

// 找到如下内容,在deps的数组中增加我们自己的hello_chromium工程
// 规则是工程根目录:executable名称,如下所示
group("gn_all") {
    testonly = true

  deps =[
      ":gn_visibility",
      "//base:base_perftests",
      "//base:base_unittests",
      "//chrome/installer",
      "//chrome/updater",
      "//net:net_unittests",
      "//skia:skia_unittests",
      "//sql:sql_unittests",
      "//tools/binary_size:binary_size_trybot_py",
      "//tools/ipc_fuzzer:ipc_fuzzer_all",
      "//ui/base:ui_base_unittests",
      "//url:url_unittests",
      "//tools/gn/tutorial:hello_world",
      "//tools/gn/tutorial:say_hello",
      "//hello_chromium:hello_chromium", // 第一个hello_chromium是目录名称,第二个hello_chromium是exe名称
    ]

在src目录下执行ninja

E:\Source\chromium\src (HEAD detached at 26ff314 -> origin)
λ ninja.exe -C out\Default hello_chromium
ninja: Entering directory `out\Default'
[1/1] Regenerating ninja files
[2/2] LINK hello_chromium.exe hello_chromium.exe.pdb

E:\Source\chromium\src (HEAD detached at 26ff314 -> origin)
λ .\out\Default\hello_chromium.exe
hello chromium.

E:\Source\chromium\src (HEAD detached at 26ff314 -> origin)
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值