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)

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




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

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



CMake include() で効率的なビルドを実現

include() は CMake の重要なコマンドの一つで、他の CMake ファイルやモジュールを読み込むために使用されます。 これにより、コードを分割し、再利用性と保守性を向上させることができます。機能他の CMake ファイルを読み込んで、その中のコマンドを実行する


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

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


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

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


CMakeにおける"get_target_property()"コマンド: ターゲットの情報を自在に操る

get_target_property()コマンドは、CMakeプロジェクトで定義されたターゲットからプロパティを取得するために使用されます。ターゲットプロパティは、ターゲットのビルド方法や動作を制御するために使用される情報です。構文引数VAR: ターゲットプロパティの値を格納する変数名



CMake の CMAKE_GENERATOR_TOOLSET 変数に関する FAQ

CMAKE_GENERATOR_TOOLSET は CMake の変数であり、特定のジェネレータが使用するネイティブビルドシステムのツールセットを指定します。これは、特定のコンパイラやツールチェーンを選択したり、ビルドプロセスをカスタマイズしたりするために使用できます。


さよならFindSDL_netモジュール!SDL_netライブラリを手動設定する方法

CMake モジュール「FindSDL_net」は、SDL_net ライブラリの開発に必要なヘッダーファイルとライブラリファイルを自動的に検索して設定する機能を提供します。SDL_net は、ネットワークアプリケーション開発用のクロスプラットフォームライブラリです。


CMake初心者でも安心:VS_KEYWORDでVisual Studioプロジェクト設定を楽々マスター

CMakeの"Properties: Targets"におけるVS_KEYWORDは、Visual Studioプロジェクトファイル生成時にターゲットに関連する属性を設定するためのマクロです。これらの属性は、プロジェクトの設定や動作に影響を与えます。


CMake の "Properties: Targets" に関連する "COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG" を徹底解説

COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG は、CMake のターゲットプロパティの一つであり、MSBuild や Xcode などのマルチコンフィギュレーションジェネレータでビルドする際に、各コンフィギュレーションごとに生成される MS デバッグシンボル


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

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