首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我们如何使用meson-build和ninja编译多个c文件?

我们如何使用meson-build和ninja编译多个c文件?
EN

Stack Overflow用户
提问于 2021-10-21 13:08:48
回答 1查看 337关注 0票数 0

我创建了一个C项目,在不同的目录下有多个文件,这些文件是使用Makefile编译的。该项目在LIB_x86_64中有库,在include中有头文件。我需要使用meson-build或ninja来编译所有这些。我编写了一个包含以下内容的build.ninja文件

代码语言:javascript
复制
rule cc

  command = gcc -c -o $out $in

  description = CC $out

rule link

  command = gcc -o $out $in

  description = LINK $out

build led.o: cc client/src/led.c

build demoCAN.o: cc client/src/demoCAN_AP.c

build commander_test.o: cc client/test/commander_test.c

build led: link led.o

build demoCAN: link demoCAN.o

build commander_test: link commander_test.o 

但是我收到关于找不到头文件的错误。如有建议,将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2021-10-22 14:52:05

所以,为了移植你所拥有的东西,你可以写下这样的代码:

代码语言:javascript
复制
project('demo', 'c')

executable('led', 'led.c')
executable('demoCAN', 'demoCAN.c')
exectuable('commander_test', 'commander_test.c')

这将使用c语言声明一个名为demo的项目,其中有三个可执行的目标,每个目标都有一个源。

构建目标,如可执行文件、库、shared_library等。将源文件作为不同的位置参数,因此您可以执行以下操作:

代码语言:javascript
复制
lib = static_library('commander', 'commander.c', 'utils.c', 'runner.c')
executable('commander_test', 'commander_test.c', link_with : lib)

介子将为每个.c文件生成编译目标,然后链接一个libcommander.a,然后将其与commander_test可执行文件链接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69662596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档