この時点でドキュメントを調べているだけで、メソンは初めてです。meson ビルドで条件付き cflags を処理するための推奨される方法は何ですか?
Visual Studio の場合、/DNOMINMAX を使用して、VS のみが生成する /wd4626 /wd4640 などの一連の警告を抑制したいとします。どのようにこれを行うことをお勧めしますか?
この時点でドキュメントを調べているだけで、メソンは初めてです。meson ビルドで条件付き 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 で meson をまだ実行していないため、clang や gcc のようにバージョン文字列に 3 つの部分があるかどうかはわかりません。