gpt4 book ai didi

build - 如何使用介子处理条件cflag?

转载 作者:行者123 更新时间:2023-12-02 04:14:53 25 4
gpt4 key购买 nike

我是介子新手,目前只是在浏览文档。您在介子构建中处理条件cflags的推荐方法是什么?

假设对于 Visual Studio,我想使用/DNOMINMAX 并抑制仅 VS 产生的一堆警告,例如/wd4626/wd4640 等。您建议如何执行此操作?

最佳答案

我使用目录层次结构和介子调用来获取编译器版本解决了这个问题。

在我的项目根目录中,有一个名为 _meson 的配置内容子目录。

_meson/
meson.build
compilers/
meson.build
clang/
meson.build
7.0/
meson.build
gcc/
meson.build
4.9/
meson.build
msvc/
meson.build
vs2015/
meson.build
vs2010/
meson.build

meson.build调用subdir('_meson')来包含配置。

_meson/meson.build 调用 subdir('compilers') 来提取有关编译器的配置 - 额外的层是为了防止我需要添加特定于平台的配置稍后。

然后_meson/compilers/meson.build看起来像:

compiler_info = meson.get_compiler('cpp')

compiler = compiler_info.get_id()
compiler_version = compiler_info.version().split('-').get(0)

# setup some variables for compiler configurations
compiler_version_major = compiler_version.split('.').get(0)
compiler_version_minor = compiler_version.split('.').get(1)
compiler_version_build = compiler_version.split('.').get(2)

# load compiler configurations
subdir(compiler)

最后一行指示 meson 包含与编译器同名的子目录。因此,当使用 gcc 编译时,这将计算为 subdir('gcc')。

这个meson.build是该编译器所有版本的配置信息所在的位置。该文件可能如下所示:

# Put config information here...

# Include version specific configuration
subdir(compiler_version_major + '.' + compiler_version_minor)

编译器名称下的子目录将包含特定编译器版本的配置信息,如果它们需要一些标志/配置,但并非所有版本的编译器都支持。

如果可能,将 subdir() 以目录存在为条件会很有帮助,这样在使用不同的特定编译器构建时构建不会中断。

警告:我还没有在 Windows 上运行介子,因此我无法确定版本字符串是否像 clang 和 gcc 那样由 3 部分组成。

关于build - 如何使用介子处理条件cflag?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34440948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com