我创建了一个C项目,在不同的目录下有多个文件,这些文件是使用Makefile编译的。该项目在LIB_x86_64中有库,在include中有头文件。我需要使用meson-build或ninja来编译所有这些。我编写了一个包含以下内容的build.ninja文件
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 但是我收到关于找不到头文件的错误。如有建议,将不胜感激。
发布于 2021-10-22 14:52:05
所以,为了移植你所拥有的东西,你可以写下这样的代码:
project('demo', 'c')
executable('led', 'led.c')
executable('demoCAN', 'demoCAN.c')
exectuable('commander_test', 'commander_test.c')这将使用c语言声明一个名为demo的项目,其中有三个可执行的目标,每个目标都有一个源。
构建目标,如可执行文件、库、shared_library等。将源文件作为不同的位置参数,因此您可以执行以下操作:
lib = static_library('commander', 'commander.c', 'utils.c', 'runner.c')
executable('commander_test', 'commander_test.c', link_with : lib)介子将为每个.c文件生成编译目标,然后链接一个libcommander.a,然后将其与commander_test可执行文件链接。
https://stackoverflow.com/questions/69662596
复制相似问题