CMakeにおける CMAKE_Fortran_MODDIR_FLAG 変数の詳細解説

2024-04-02

CMakeにおけるCMAKE_Fortran_MODDIR_FLAG変数の詳細解説

CMAKE_Fortran_MODDIR_FLAGは、Fortranモジュールの出力ディレクトリを指定するために使用するCMake変数です。この変数は、Fortranコンパイラにモジュールファイルを保存する場所を指示するために使用されます。

設定方法

CMAKE_Fortran_MODDIR_FLAG変数は、set()コマンドを使用して設定できます。以下の例は、モジュールファイルを出力ディレクトリbuild/modulesに保存する方法を示します。

set(CMAKE_Fortran_MODDIR_FLAG "-Jbuild/modules")

動作

CMAKE_Fortran_MODDIR_FLAG変数は、Fortranコンパイラが呼び出される際に渡されます。コンパイラはこのフラグを使用して、モジュールファイルの保存場所を決定します。

使用例

CMAKE_Fortran_MODDIR_FLAG変数は、Fortranモジュールを整理するために使用できます。例えば、以下の例では、異なる種類のモジュールを異なるディレクトリに保存しています。

set(CMAKE_Fortran_MODDIR_FLAG "-Jbuild/modules")

# インターフェースモジュールは`interface`ディレクトリに保存
set_target_properties(my_interface_module PROPERTIES
  FORTRAN_MODULE_DIRECTORY "interface")

# 実装モジュールは`impl`ディレクトリに保存
set_target_properties(my_impl_module PROPERTIES
  FORTRAN_MODULE_DIRECTORY "impl")

補足

  • CMAKE_Fortran_MODDIR_FLAG変数は、Fortranコンパイラによって異なる場合があります。詳細は、コンパイラのドキュメントを参照してください。
  • CMakeには、Fortranモジュールを管理するための他の変数も存在します。詳細は、CMakeのドキュメントを参照してください。


CMakeにおけるCMAKE_Fortran_MODDIR_FLAG変数のサンプルコード

サンプルコード1:モジュールファイルをbuild/modulesディレクトリに保存

set(CMAKE_Fortran_MODDIR_FLAG "-Jbuild/modules")

add_executable(my_program
  main.f90)

target_link_libraries(my_program
  my_module)

このコードでは、CMAKE_Fortran_MODDIR_FLAG変数が"-Jbuild/modules"に設定されています。これにより、my_moduleモジュールはbuild/modulesディレクトリに保存されます。

サンプルコード2:異なる種類のモジュールを異なるディレクトリに保存

set(CMAKE_Fortran_MODDIR_FLAG "-Jbuild/modules")

# インターフェースモジュールは`interface`ディレクトリに保存
set_target_properties(my_interface_module PROPERTIES
  FORTRAN_MODULE_DIRECTORY "interface")

# 実装モジュールは`impl`ディレクトリに保存
set_target_properties(my_impl_module PROPERTIES
  FORTRAN_MODULE_DIRECTORY "impl")

add_executable(my_program
  main.f90)

target_link_libraries(my_program
  my_interface_module
  my_impl_module)

このコードでは、CMAKE_Fortran_MODDIR_FLAG変数が"-Jbuild/modules"に設定されています。さらに、set_target_properties()コマンドを使用して、異なる種類のモジュールを異なるディレクトリに保存するように設定しています。

set(CMAKE_Fortran_MODDIR_FLAG "-Jbuild/modules")

add_custom_command(
  TARGET my_program
  POST_BUILD
  COMMAND ${CMAKE_COMMAND}
    -E make_directory build/bin
    -E copy build/modules/my_module.mod build/bin)

add_executable(my_program
  main.f90)

target_link_libraries(my_program
  my_module)

このコードでは、CMAKE_Fortran_MODDIR_FLAG変数をコンパイラオプションとして渡すために、add_custom_command()コマンドを使用しています。

これらのサンプルコードは、CMAKE_Fortran_MODDIR_FLAG変数を使用してFortranモジュールファイルをどのように管理できるかを示しています。



CMakeにおけるFortranモジュールファイルの保存場所を指定する他の方法

FORTRAN_MODULE_DIRECTORYプロパティを使用して、ターゲットごとにモジュールファイルの保存場所を指定できます。この方法は、異なる種類のモジュールを異なるディレクトリに保存する場合に便利です。

set(CMAKE_Fortran_MODDIR_FLAG "-Jbuild/modules")

# インターフェースモジュールは`interface`ディレクトリに保存
set_target_properties(my_interface_module PROPERTIES
  FORTRAN_MODULE_DIRECTORY "interface")

# 実装モジュールは`impl`ディレクトリに保存
set_target_properties(my_impl_module PROPERTIES
  FORTRAN_MODULE_DIRECTORY "impl")

add_executable(my_program
  main.f90)

target_link_libraries(my_program
  my_interface_module
  my_impl_module)

MODULE_PATH変数を使用して、モジュールファイルの検索パスを指定できます。この方法は、モジュールファイルをプロジェクト全体で共有する場合に便利です。

set(CMAKE_MODULE_PATH "build/modules")

add_executable(my_program
  main.f90)

target_link_libraries(my_program
  my_module)

add_custom_command()コマンドを使用して、モジュールファイルをビルド後に手動でコピーすることができます。この方法は、複雑な配置要件がある場合に便利です。

set(CMAKE_Fortran_MODDIR_FLAG "-Jbuild/modules")

add_custom_command(
  TARGET my_program
  POST_BUILD
  COMMAND ${CMAKE_COMMAND}
    -E make_directory build/bin
    -E copy build/modules/my_module.mod build/bin)

add_executable(my_program
  main.f90)

target_link_libraries(my_program
  my_module)

これらの方法は、それぞれ異なる利点と欠点があります。プロジェクトのニーズに合わせて適切な方法を選択する必要があります。




CMake find_file() コマンドの代替方法:もっと柔軟なファイル検索

<variable>: 検索結果を格納する CMake 変数<file_names>: 検索するファイル名のリスト (スペース区切り)<path_list>: 検索するパス名のリスト (スペース区切り)<options>: 検索オプション (後述)



CMakeの"Commands"における"fltk_wrap_ui()"プログラミングを徹底解説!

この解説では、CMakeの"Commands"における"fltk_wrap_ui()"プログラミングについて、分かりやすく説明します。"fltk_wrap_ui()"は、CMakeでFLTK GUIアプリケーションをビルドするために使用されるマクロです。このマクロは、FLTK GUI定義ファイルをC++コードに変換し、プロジェクトに組み込みます。


【初心者向け】CMakeでテストを実行する3つのステップ: ctest_test() コマンドから始める

引数:<test_name>: 実行するテストの名前。ワイルドカードを使用して、名前パターンに一致する複数のテストを選択できます。[OPTIONAL arguments]: テストの実行方法を制御するオプション引数。ctest_test()コマンドには、テストの実行方法を細かく制御するための様々なオプション引数が用意されています。以下に、よく使用されるオプション引数をいくつか紹介します。


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

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


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

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



CMAKE_MODULE_PATH と find_package を活用して Visual Studio SDK をプロジェクトに含める

CMAKE_VS_SDK_SOURCE_DIRECTORIES は、Visual Studio SDK のソースディレクトリを指定するために使用される CMake 変数です。デフォルトでは、Visual Studio は SDK のソースファイルを検索するために既定の場所を使用します。しかし、この変数を使用することで、CMake プロジェクト内で独自のソースディレクトリを指定することができます。


CMakeLists.txtファイルにおけるCMAKE_LANG_FLAGSのサンプルコード

CMAKE_LANG_FLAGS は、CMake でビルドされる全ての言語に適用されるコンパイルオプションを設定するための変数です。この変数に設定されたオプションは、全てのソースファイルのコンパイル時にデフォルトとして適用されます。設定方法


フレームワーク地獄はもうおしまい!CMakeFindFrameworksモジュールでMac OS X開発を快適に

CMakeFindFrameworksモジュールは、Mac OS X上で動作するCMakeプロジェクトにおいて、必要なフレームワークを自動的に検出するための便利なツールです。このモジュールを使うことで、フレームワークのヘッダーファイルやライブラリファイルを個別に探す必要がなくなり、プロジェクトの設定を簡潔に保つことができます。


CMakeポリシー CMP0044 でソースファイル名の重複を検知する

CMakeポリシー CMP0044 は、CMake 3.13 で導入された新しいポリシーで、target_sources コマンドでソースファイルのリストを指定する際、ファイル名の重複を検知し、警告またはエラーを出力する機能を提供します。このポリシーは、プロジェクト内のソースファイル管理をより厳格にし、ビルドエラーを防ぐために役立ちます。


プログラミング初心者でも安心!CMake で HIP デバイスコードを生成する方法

CMAKE_HIP_ARCHITECTURES は、CMake のターゲットプロパティで、HIP デバイスコードを生成する GPU アーキテクチャのリストを指定するために使用されます。これは、HIP ランタイムがサポートするすべてのアーキテクチャをデフォルトで含みますが、必要に応じてユーザーによってオーバーライドできます。