Fortranでソフトウェアプロジェクトをコンパイルする

誰もが夜間の組み立てとテストの利点を知っています。午前中は、プロジェクトに関するすべての情報を知っています。

プロジェクトがアセンブルされたかどうか、いくつのテストに合格したか、アセンブルされた実行可能ファイルがあり、顧客に提示できます。



Fortranでプロジェクトを自動的にアセンブルおよびテストするプロセスを設定する際の最大の問題の1つは、主にコマンドラインモードで、非インタラクティブモードで実行可能ファイルを構築することです。



Fortranプロジェクトのファイルは、モジュールを介して互いに依存していることを思い出してください。 一方のファイルにmodule A



あり、もう一方のファイルにmodule A



use A



場合、最初のファイルを先にコンパイルする必要があります。 さらに、そのような情報はどこにも記録されず、その場で生成されます。 ほとんどの場合、インテルFortranコンパイラとVisual Studioの統合により、コンパイルシーケンスが正しく決定されますが、メイクファイルの作成を目的とした特別なユーティリティについては言うまでもありません。



以下は、プロジェクトファイルの依存関係を判別する方法と、特別なプログラムを使用せずにプロジェクトを自動的にビルドするプロセスの説明です。



このフォームでタスクを設定します。入力のプロジェクトのソースファイル、vfprojプロジェクト、および一般にslnファイルのみを使用して、プロジェクトを自動的にアセンブルします。



おそらく、exeファイルを構築するための既存の方法の中には、プロジェクトファイル(vfproj)からmakeファイルの形式で依存関係を生成する特別な中間ユーティリティを呼び出す必要があるものがあります。

このようなユーティリティの検索は成功につながりませんでした。 そして、スタジオでのコンパイルとリンクが成功した後、誤って定義された依存関係、条件付きコンパイルの誤った解釈( !DEC$



)などにより、一部のファイルを再コンパイルすることが可能になります。 したがって、外部ユーティリティは、コンパイル順序を決定する信頼できる方法とは見なされません。



タスクは2つに分かれています。

  1. プロジェクトファイル(XML形式で保存されている)を、コンパイルパラメータを含むファイルのリストとして書き換えます。
  2. 正しい順序でコンパイルします。


最初のタスクを解決するのは難しくありません。 XML形式の属性とコンパイラパラメータの対応が作成されます。 例: WarnUnusedVariables="true"



代わりに、代わりに/warn:unused



WarnUnusedVariables="true"



/warn:unused



ます。 ところで、このアプローチは、既存のプロジェクトの設定の重要な評価を設定します。不要な設定を破棄し、既存の設定の目的を理解し、変更することができます。



2番目の問題を解決するために、コンパイラー自体の動作に基づいて依存関係をキャッチするという次のアプローチが選択されました。 プログラムがコンパイラの観点から正しく記述されていると仮定します。

各プログラマは、プロジェクト全体を定期的にコンパイルして、実装された機能を検証します。 その後、ファイルのコンパイルは成功するか、モジュールがない場合、最初のエラーはModule not found



ます。 不足しているモジュールの名前を覚えて、リスト内の次のファイルに進みます。



他のタイプのミスが発生した場合、プロジェクトの破損について話し合うことができます。その後、コンパイルが停止します。 リストの最後のファイルをコンパイルするときに、別のモジュールに依存関係が見つかった場合、これはプロジェクト内の循環依存関係、つまりエラーを示しています。



さらに、コンパイラーがエラーを生成しない場合、どのモジュールが作成されたかを調べます。 そのようなモジュールがないために以前のファイルの1つがコンパイルされなかったことがわかった場合、

再度コンパイルできます。



コンパイルの順序はリポジトリで固定されています。 中間オブジェクトファイルは削除できます。

次回はコンパイルに余分な時間を費やしません。 依存関係が少し変更された場合、チェーン全体を最初からトレースすることはなくなります。



プロジェクトのアセンブリを高速化することについて話しているのではなく、通常の意味でのメイクファイルは作成されないことに注意してください。



実装機能


VBScript言語を使用することは可能です。Windowsでは、インストールするためにコンパイラが必要ないためです。 この理由から、著者はさまざまな方法でVBScriptを使用しました。

Windowsを実行している任意のコンピューターでコンパイルを構成できます。これは、オフィスの絶対的な大部分です。 VBScriptにはXMLファイルの読み取りとサポートが組み込まれています。これは、この形式で保存されたプロジェクトに関連しています。 Linux用のスクリプトの書き換えはまだ必要ありません。



VBScriptでは、出力バッファをインターセプトするために特に注意が必要です。これには、ご存じのとおり、特定の問題があります。 標準出力およびエラー出力を制御およびインターセプトするには、 WSHShell.Exec



呼び出しを使用する必要があります。 同じ目的で、1回のコンパイルの実行時間に制限を設定する必要があります。 関連する問題-プログラムが複雑な場合、プロジェクトから任意のファイルをコンパイルするとコンパイラがフリーズする可能性があります-単にコンパイラの欠陥が原因です。 したがって、最初の起動は非常に長くなる可能性があります。



別の欠点は、VBScriptがコンソールウィンドウモードでない場合、

コンパイルされた各ファイルの黒いコンソールウィンドウが常にポップアップします。

また、コンソールウィンドウモードでは、1つのスクリプトウィンドウが常に開いています。 プロセス全体は夜間またはビルドテストサーバーで開始されるため、この動作は許容されます。



ちなみに


スクリプトは別の目的に使用できます。 実際、コードは1日で破損する可能性があるため、コンパイルは機能せず、テストは起動しません。テストが数時間にわたって機能する場合は非常に悲しいことです。 したがって、非常に単純なエラー修正の場合でも、日中にチェックして開始すると、時間の損失につながります。



コンパイル可能性チェックを設定するのは簡単です。たとえば、19-20-21 a.m. ランダムに破損したコードを修正できる人がチームにいるとします。 その後、プロジェクトが収集されなかった場合は、少なくとも午前中にテスト結果とともにアセンブルされた実行可能ファイルが存在するように、この問題についてSMSを電話に送信するように構成できます。



特定の電話番号にSMSを送信するには、加入者の同意を得て、 特別なサービスを無料で利用できます (投稿76867および81630を参照)。



All Articles