CMakeコマンド mark_as_advanced() の詳細解説

2024-04-02

CMakeコマンド mark_as_advanced() の詳細解説

mark_as_advanced() は、CMakeプロジェクトで特定のキャッシュ変数を "詳細設定" としてマークするために使用されるコマンドです。このコマンドによって、GUI ツールでこれらの変数はデフォルトでは表示されなくなり、ユーザーは "詳細設定" オプションを有効にするまで編集できなくなります。

コマンドフォーマット

mark_as_advanced(<変数名1> [<変数名2> ...])

引数

  • <変数名>: 詳細設定としてマークするキャッシュ変数の名前。複数の変数を指定する場合は、スペースで区切ります。

オプション

  • CLEAR: 最初の引数として CLEAR を指定すると、以前に mark_as_advanced() で設定された詳細設定フラグがすべてクリアされます。

動作

mark_as_advanced() コマンドは、指定されたキャッシュ変数に ADVANCED フラグを設定します。このフラグが設定された変数は、GUI ツールで "詳細設定" オプションが有効でない限り、デフォルトでは表示されません。

# FOO と BAR というキャッシュ変数を詳細設定としてマーク
mark_as_advanced(FOO BAR)

# すべての詳細設定フラグをクリア
mark_as_advanced(CLEAR)

詳細

  • mark_as_advanced() コマンドは、CMake バージョン 3.0 以降で使用できます。
  • 詳細設定としてマークされた変数は、cmake-gui などの GUI ツールで "詳細設定" パネルに表示されます。
  • 詳細設定としてマークされた変数は、コマンドラインから引き続き編集できます。
  • 詳細設定フラグは、キャッシュファイルに保存されます。

補足

  • mark_as_advanced() コマンドは、ユーザーインターフェースを簡素化し、初心者ユーザーを混乱させないようにするために使用できます。
  • 詳細設定としてマークされた変数は、上級ユーザー向けのオプションであることを示すために使用できます。
  • 詳細設定としてマークされた変数は、プロジェクトのビルドに不可欠ではない変数であることを示すために使用できます。

関連コマンド

  • set_property(): キャッシュ変数のプロパティを設定するために使用されます。


CMakeコマンド mark_as_advanced() のサンプルコード

# FOO と BAR というキャッシュ変数を詳細設定としてマーク
mark_as_advanced(FOO BAR)

# すべての詳細設定フラグをクリア
mark_as_advanced(CLEAR)

詳細設定としてマークされた変数の使用例

# 詳細設定としてマークされた変数の値を設定
set(FOO "my_value" CACHE STRING ADVANCED)

# 詳細設定としてマークされた変数の値を取得
message("FOO is: ${FOO}")

# 詳細設定パネルで FOO 変数を編集可能にする
if(CMAKE_GUI)
  set_property(CACHE FOO PROPERTY STRINGS ADVANCED NO)
endif()

詳細設定フラグの確認

# FOO 変数が詳細設定としてマークされているかどうかを確認
if(IS_ADVANCED(FOO))
  message("FOO is an advanced variable")
else()
  message("FOO is not an advanced variable")
endif()

詳細設定パネルでの表示

# FOO 変数を詳細設定パネルに表示
set(FOO "my_value" CACHE STRING ADVANCED)

# GUI ツールで "詳細設定" オプションを有効にして FOO 変数を編集

詳細設定フラグの保存

# 詳細設定フラグをキャッシュファイルに保存
cmake_cache_store()


CMakeコマンド mark_as_advanced() の代替方法

キャッシュ変数の名前空間に ADVANCED_ という接頭辞を追加することで、その変数を "詳細設定" としてマークできます。例えば、以下のコードは FOO 変数を "詳細設定" としてマークします。

set(ADVANCED_FOO "my_value" CACHE STRING)

set_property() コマンドを使用して、キャッシュ変数の PROPERTY プロパティに ADVANCED フラグを設定できます。例えば、以下のコードは FOO 変数を "詳細設定" としてマークします。

set(FOO "my_value" CACHE STRING)
set_property(CACHE FOO PROPERTY ADVANCED TRUE)

コメントを使用する

キャッシュ変数の前にコメントを追加することで、その変数を "詳細設定" としてマークできます。例えば、以下のコードは FOO 変数を "詳細設定" としてマークします。

# 詳細設定:
set(FOO "my_value" CACHE STRING)

GUI ツールを使用する

多くの CMake GUI ツールは、詳細設定パネルで特定の変数を "詳細設定" としてマークするための機能を提供しています。

どの方法を選択するべきかは、プロジェクトの要件と個人的な好みによって異なります。

  • キャッシュ変数の名前空間を使用する方法は、最も簡潔で分かりやすい方法です。
  • set_property() コマンドを使用する方法は、より柔軟な方法です。
  • コメントを使用する方法は、最も簡単な方法ですが、他の方法と比べて分かりにくいです。
  • GUI ツールを使用する方法は、最も視覚的な方法ですが、GUI ツールを使用していない場合は使用できません。

補足

  • 詳細設定としてマークされた変数は、GUI ツールで "詳細設定" オプションが有効でない限り、デフォルトでは表示されません。



C++標準ライブラリ、テンプレートエンジン、シェルスクリプト... string()コマンドの代替方法を徹底比較

CMakeのstring()コマンドは、文字列処理を行うための強力なツールです。C++のstd::stringのような機能に加え、CMake特有の便利な機能も備えています。主な機能文字列の連結、分割、置換、比較大文字・小文字変換部分文字列の抽出



CMakeのCommandsにおけるuse_mangled_mesa()

use_mangled_mesa() は CMake の Commands における関数で、Mesa ライブラリの mangled シンボル名を解決するために使用されます。Mesa は OpenGL の実装であり、古いバージョンの Mesa ではシンボル名が mangled されるため、use_mangled_mesa() を使用してこれらのシンボル名を解決する必要があります。


CMake で変数を削除する3つの方法:unset() 以外にも使えるテクニック

<variable_name> は、削除したい変数の名前です。変数の名前は、文字、数字、下線(_)で構成され、先頭に数字以外のアクティブ文字が来る必要があります。変数の削除この例では、MY_VAR という変数を作成し、"Hello, world!" という値を設定します。その後、unset() コマンドを使用して MY_VAR を削除します。2番目の message() コマンドは、MY_VAR が削除されたことを確認するために使用されます。


プログラミング初心者でもわかる!CMake の "set_directory_properties()" コマンドの使い方

set_directory_properties() コマンドは、CMakeプロジェクト内のディレクトリとサブディレクトリにプロパティを設定するために使用されます。これらのプロパティは、ビルドプロセス、インストール、その他の CMake 動作を制御するために使用できます。


CMake: find_library()とtarget_link_directories()の連携

target_link_directories()コマンドは、CMakeプロジェクト内のターゲットに対して、リンカがライブラリを検索するディレクトリを指定するために使用されます。これは、ターゲットがリンクするライブラリが標準の検索パスに存在しない場合に特に重要です。



CMake try_compile() を使って特定のライブラリがインストールされているかどうかを確認する方法

try_compile() は、CMake の強力なコマンドの一つで、コードを実際にコンパイルすることなく、コンパイルが成功するかどうかを確認することができます。これは、特定のコンパイラやオプションがシステム上で使用可能かどうかをテストしたり、コードの移植性を検証したりする際に非常に便利です。


Dart で CMake の Modules を作成して、ビルドプロセスを効率化

1. 複雑な CMake ロジックの簡素化Dart を使用すると、複雑な CMake ロジックをより簡潔で読みやすいコードに分割できます。これは、特に大規模なプロジェクトで複数の CMake ファイルを使用する場合に役立ちます。2. コードの再利用性の向上


cmake_policy()コマンドを使いこなしてCMakeプロジェクトをマスター

cmake_policy()コマンドの基本的な構文は以下の通りです。<policy-id>: ポリシーの識別子。CMP<NNNN>形式で指定されます。<behavior>: ポリシーの動作。OLDまたはNEWを指定します。OLDとNEWの動作の違い


CMake と gettext の連携: 国際化とローカライズ (i18n & l10n) を容易に

FindGettext は、CMake モジュールの一つで、GNU gettext ライブラリとツールを見つけ、ビルドプロジェクトで使用できるようにするためのものです。gettext は、国際化とローカライズ (i18n & l10n) をサポートするためのライブラリとツール群を提供します。


CMake GUIでOSX_ARCHITECTURES_CONFIGを設定する方法

概要デフォルト値: OSX_ARCHITECTURES プロパティによって設定されます。データ型: STRING使用箇所: ターゲットのプロパティ設定方法: CMake GUICMake GUI設定例詳細解説OSX_ARCHITECTURES_CONFIG は、ターゲット毎に異なるアーキテクチャを指定するために使用できます。例えば、"my_app" は "Debug" 構成では x86_64 と arm64 アーキテクチャでビルドし、"Release" 構成では x86_64 アーキテクチャのみでビルドするといった設定が可能です。