使用介子构建,是否可以测试我的项目中是否存在目录?
例如,我通常将验收测试放在单元测试旁边,放在这样的文件夹结构中:
library/
header.hp
src/
lib.cpp
tests/
acceptance_test/
unit_test/
Run Code Online (Sandbox Code Playgroud)
我并不总是进行验收测试,如果没有必要,我希望避免在那里有 meson.build 文件。subdir('acceptance_test')如果目录存在,我宁愿有一个条件acceptance_test/。
我有一个来自项目的静态库A(我们称之为它liba.so),我想在我的项目中编译一个共享库B(我们称之为它libb.so)并嵌入liba.so其中。
另外,我在该项目中有一个二进制文件B,它也依赖于liba.so,所以我想将它嵌入到二进制文件中。
那可能吗?如何?
相对于我的项目根目录meson.build所在的位置,我的所有源文件都位于src/.
是否可以在 meson.build 中指定这些源文件,而不会强迫我在它们全部加上前缀src/,因为这有点多余?
在 Meson 中,是否可以从调用创建的对象中获取字符串绝对路径include_directories?
我的用例:
include_dirs = include_directories('include')
lib = library(
'mylib',
source_files,
include_directories: include_dirs
)
run_target('analyze',
command: ['static_analysis',
source_files,
'-I', include_dirs.to_abs_path(),
]
)
Run Code Online (Sandbox Code Playgroud)
include_dirs.to_abs_path()不存在,但我想知道类似的事情是否可能。或者,files()存在(如此处所用source_files);有没有directories()?
meson.source_root() 返回的目录是项目根目录(带有根级别的 meson.build 文件)还是当前正在处理的 meson.build 文件的路径?
使用介子构建,如果我在中定义了多个测试meson.build(如此处所示),是否可以构建并运行特定的单个测试?假设我正在开发一个特定的模块,并且想使用命令提示符运行该模块的测试?
我想在Windows上使用meson构建系统.我是python noob.看起来我安装了它,但我不知道如何运行它.
我已经安装了python 3.6.我从'cmd'安装了meson:
C:\>python -m pip install meson
Collecting meson
Downloading meson-0.39.0.tar.gz (558kB)
100% |????????????????????????????????| 563kB 866kB/s
Installing collected packages: meson
Running setup.py install for meson ... done
Successfully installed meson-0.39.0
Run Code Online (Sandbox Code Playgroud)
我试着运行介子:
C:\>python -m meson
C:\Users\user\AppData\Local\Programs\Python\Python36-32\python.exe: No module named meson
C:\>meson
'meson' is not recognized as an internal or external command,
operable program or batch file.
Run Code Online (Sandbox Code Playgroud)
我该如何使用/运行这个东西?
如何cp从 Meson 构建脚本运行 shell 命令(例如,复制)?
我尝试使用以下代码:
r = run_command('cp', 'test.txt', 'test2.txt')
if r.returncode() != 0
warning('Command failed')
endif
Run Code Online (Sandbox Code Playgroud)
但它什么也没做。
run_command运行成功(返回 0),但未复制文件。
如果我cp用替换cp3,我会从 Meson 收到一条错误消息,进程终止,甚至不会到达下一行。
如果我替换test.txt为test0.txt,我会从脚本中收到一条错误消息。
因此该脚本行为正确,但该命令在文件系统上没有留下任何痕迹。
是run_command从 Meson 运行 shell 命令的唯一方法吗?我究竟做错了什么?
参考: https: //mesonbuild.com/External-commands.html
我有一个带有一些 C++ 测试代码的 git 存储库,我想使用Googletest编写一些测试。我曾经git submodule把它作为上述存储库的一部分。我想使用介子作为构建引擎。到现在为止还挺好。
但是,我无法理解如何让介子构建和链接我的测试与 googletest 子模块......我应该使用包装吗?外部依赖?什么?
请注意,介子支持对打包版本的 gtest/gmock 的依赖,但这不是我想要的,因为 gtest/gmock 的开发人员建议反对它。另外,我想要最前沿的,因为我疯了?
此外,我不认为忍者在这里起作用,但我提到我使用它以防万一。
在介子构建上,依赖关系由 pkg-config/cmake 解决...
但对于系统库,没有文档。我只找到其中2个:
那么我如何链接 -lm -lrt ?
一切猜测都失败了。
meson-build ×10
build ×2
build-system ×2
clang ×1
command ×1
file-copying ×1
googletest ×1
linux ×1
ninja ×1
python ×1
python-3.x ×1
shell ×1
windows ×1