C 同一meson.build中具有不同配置文件的多个目标?
我的C应用程序可以使用不同的模式构建,根据config.h的内容,这些模式的行为会有所不同。 在我的meson.build文件中,我使用configure_file函数生成这个头文件 现在我想改进我的构建系统,在一个构建中为多种模式编译二进制文件。这意味着我必须同时管理不同版本的config.h 我的计划是创建不同版本的config.h并将它们保存在不同的文件夹中。然后,定制每个介子目标的include目录,为我正在构建的模式选择头部 不幸的是,我发现您不能在configure_file的输出选项中指定子文件夹。该文件将始终在与当前正在执行的meson.build相同的位置创建 这意味着我必须始终包含“.”,并且无法区分不同的模式。注意:更改C源文件中的include指令不是一个选项C 同一meson.build中具有不同配置文件的多个目标?,c,meson-build,C,Meson Build,我的C应用程序可以使用不同的模式构建,根据config.h的内容,这些模式的行为会有所不同。 在我的meson.build文件中,我使用configure_file函数生成这个头文件 现在我想改进我的构建系统,在一个构建中为多种模式编译二进制文件。这意味着我必须同时管理不同版本的config.h 我的计划是创建不同版本的config.h并将它们保存在不同的文件夹中。然后,定制每个介子目标的include目录,为我正在构建的模式选择头部 不幸的是,我发现您不能在configure_file的输出选
有没有办法在介子中解决这个问题?让介子以本机方式处理配置选项,而不是通过config.h解析选项来解决这个问题 在meson_options.txt文件中,可以声明自定义配置选项,例如:
option('mode', type : 'combo', choices : ['one', 'two'], value : 'one')
然后,在配置生成时,可以通过调用以下命令创建单个生成目录:
meson buildOne -Dmode=one
ninja -C buildOne
以及
然而,上述方法可能并不可取
另一种可能的方法是声明多个子项目。如果您当前的meson.build不太具体,您可以尝试以下方法
有一个处理打包的新主meson.build,但也在子项目目录的子目录中复制一个模板meson.build,每个模式一个。这可能只需要几个额外的.././来补偿不同的构建结构
子项目声明的好处在于,您可以覆盖该子项目的构建选项。
这实际上意味着,您又有了单独的构建目录,但只有一个主构建目录,并且只需要调用介子一次
按照这种思路,您可以重构应用程序,并在专用子项目/库中只构建不同的模式部分。而不是尝试将config.h保存到不同的目录中。是否可以先更改目录?i、 e:mkdir config1&&cd config1&&&mkdir../config2&&cd../config2&&如果不是这样,则可能运行一个循环:对于config1中的i,config2;做mkdir$i;mv config.h$i;doneThanks对于评论,是否可以直接从介子文件中移动头而不是使用bash脚本?不知道,抱歉。这不是我使用的工具,这些建议只是我在过去遇到类似情况时的想法。谢谢你的评论!我将回顾这两个建议,看看什么对我的项目更有意义。
meson buildTwo -Dmode=two
ninja -C buildTwo