2

私は大きな問題に直面しています..Linux OSでLinux makeファイルを使用してcファイルをコンパイルしました。

コマンドプロンプトで同じmakeファイルを使用して、Windowsで同じファイルをコンパイルしたい。そのために、nmake ユーティリティと Cygwin ユーティリティもあります。

シンプルなメイクファイルを使用したシンプルなプログラムで成功しました..

しかし、複雑なmakeファイルで複雑なCファイルを使用していたときにコンパイルすることはできません。

Linux の make ファイルの '/' を Windows の '\' に変更しましたか? 他に変更はありますか?

「windows には特別な make ファイル形式はありますか?」と知りたいのですが。

また、それらの違い..

私は本当にそれを必要としています...

4

6 に答える 6

5

残念ながら、nmake は make の影響を受けていないだけであり、多くの重要なことを正しく行うことができませんでした。最も簡単な方法は、両方のプラットフォームで同じ種類の make を使用することから始めることです。

Linux では、Gnu make がデフォルトで最適なオプションです。

Windows では、いくつかの癖のある Gnu make のソースがいくつかあります。個人的には、GnuWin32 プロジェクトの Gnu make のネイティブ win32 ビルドを主に使用しています。他のいくつかのパッケージもあると便利なので、プロジェクトの残りのパッケージを調べてみることをお勧めします。

代替ソースはCygwinMinGW32/MSYSです。

Cygwin は、Windows カーネル上に *nix 互換環境を提供する信頼できる試みです。これは、Windows API 経由で実装された *nix (特に POSIX) システム コールの大部分をエクスポートする DLL で構成されています。その DLL には、ディスク マウントに関する独自の考えもあり、*nix スタイルのパス名を好みます。DLL 自体はライセンスされた GPL であり (商用利用ライセンスは有料で利用できます)、Cygwin 環境でビルドされたプログラムはデフォルトでそれを必要とするため、考慮すべき要素になる可能性があります。もう 1 つの要因は、Cygwin が通常の Windows ユーザーにとって使いにくいことです。そのため、Cygwin に基づく開発プロジェクトは通常、UNIX 以外のユーザーにとって扱いにくいものになります。ただし、クロスプラットフォームの開発者にとっては、Cygwin は Makefile に必要な通常の疑わしいユーティリティ プログラムをすべて取得できるため、非常に便利です。

MinGW32 は移植プロジェクトであり、GCC コンパイラを移植してネイティブ Windows 実行可能ファイルとして実行するという非常に優れた仕事をしました。それらが提供するヘッダー ファイルと一緒に使用すると、最新の Windows インストールに同梱されている C ランタイム DLL を介して、ほぼすべての Windows API を使用できます。

MSYS は Cygwin の軽量フォークであり、通常は典型的な *nix Makefile によって存在すると想定される最小限のユーティリティ セット (*nix シェルで始まる) が含まれています。Cygwin とは異なり、MSYS はデフォルトのターゲットがネイティブ Windows API になるように構成されています。

私がここでほのめかそうとしていること、そしておそらく率直に述べるべきことは、互換性の問題は make you use の方言で終わらないということです。

Makefile 言語自体は利用可能なコマンド シェルに大きく依存しており、最も深刻なプロジェクトの Makefile は、cp や rm などのコア ユーティリティの多くを使用することになります。

make の GnuWin32 ビルドから始めて、MinGW32 と MSYS もインストールすることを強くお勧めします。これにより、MSYS と Linux の両方で動作する Makefile を比較的簡単に作成でき、必要なプラットフォーム固有のロジックはわずかです。

于 2009-05-21T22:24:45.277 に答える
1

NMakeはWindowsツールであり、Windowsスタイルのパス、つまりドライブ文字と円記号を含むパスのみを解析します。したがって、cygwinとともにインストールされたGNUMakeを使用する必要があります。

于 2009-05-21T12:10:41.257 に答える
1

クロスプラットフォームの make には CMake を検討する必要がありますが、実際の問題は、'/' を '\' に変更する必要がないことです。cygwin または msys (推奨) で実行している場合は、これを処理する必要があります。

于 2009-05-21T12:03:45.610 に答える
0

nmakeは、Windows自体ではなく独自の形式を取得したため、makefile形式はosではなくmakeツールに関連しています。単純なことについては、g(nu)makeとnmakeの形式は似ています。これは、gmakeのみの使用を検討する前に人々が提案したとおりです。

于 2009-05-21T12:16:16.847 に答える
0

nmake は makefile を問題なく読み取るはずです。違いは一般に、OS ではなく make のバージョン間です。

大きな問題は、ターゲット プラットフォームが実際に何であるかです。このコードを Windows でネイティブに動作させようとしているのか、それとも Cygwin で実行しようとしているのかということです。

于 2009-05-21T12:01:56.050 に答える
0

両方のプラットフォームで gnumake を使用してください。そうです。Visual C には何年も触れていません。

于 2009-05-21T12:03:42.770 に答える