私は現在、Github でオープンソース ユーティリティとして配布される C++ コマンド ライン ユーティリティを開発しています。ただし、プログラムをダウンロードしたユーザーが、任意のプラットフォーム (特に Mac、Linux、および Windows) でプログラムをできるだけ少ないステップで簡単にコンパイルして実行できるようにしたいと考えています。さまざまなプラットフォームに依存しない C++ コンパイラ (g++ および win32) と互換性を持たせるために、コードに小さな変更を加えるだけでよいと仮定すると、どうすればこれを行うことができますか? メイクファイルは関連していますか?
2 に答える
私のアドバイスは、make ファイルを使用しないことです。十分な大きさのプロジェクトのファイルを維持するのは面倒であり、すぐに見つけられないエラーが発生することがあります (*.o ファイルがまだそこにあるため)。
ここでこの質問を参照してください
Makefile は確かに非常に関連性があります。異なるコンパイラを使用しているという事実を補うために、(少なくとも) 2 つの異なる makefile が必要になる場合があります。
プロジェクトの複雑さに依存するため、これをどのように解決するかを特定するのは困難です。スクリプト/バッチファイルを作成し、「Linux/Unix では build.sh コマンドを使用し、Windows では build.bat コマンドを使用してください」と文書化するのが最も簡単な場合があります。コンパイラとフラグなど
または、アーキテクチャによって決定されるメイクファイルにインクルードすることもできます。または別のメイクファイル。
プロジェクトが非常に単純な場合、基本的な makefile を提供するだけで十分かもしれませんが、Linux/MacOS で x.cpp をコンパイルすると、オブジェクト ファイルが xo と呼ばれ、Windows ではオブジェクト ファイルが x と呼ばれるため、そうなる可能性はほとんどありません。オブジェクト。ライブラリにはさまざまな名前があり、dll にはさまざまな名前があり、Linux/MacOS では、最終的な実行可能ファイルには拡張子がないため (通常)、"myprog" と呼ばれ、Windows での実行可能ファイルは "myprog.exe" と呼ばれます。
これらの種類の違いは、メイクファイルが異なる必要があることを意味します。