残念なことに、nmakeはメイクにゆるやかに触発されており、多くの重要なことは正しくありませんでした。はるかに簡単なことは、両方のプラットフォームで同じ風味を持つことから始めることです。
Linuxでは、Gnu makeがデフォルトの最適なオプションです。
Windowsでは、Gnu makeにはいくつかのソースがありますが、いくつかの選択肢があります。個人的には、私はたいていnative win32 build of Gnu make from the GnuWin32 projectを使用しています。プロジェクトのパッケージの残りの部分については、他のパッケージのいくつかが役に立つと思うかもしれないので、あなたは突き止めたいかもしれません。
代替ソースは、CygwinおよびMinGW32/MSYSです。
Cygwinは、Windowsカーネルの上に* nix互換環境を提供する信頼できる試みです。これは、Windows APIを介して実装された* nix(特にPOSIX)システムコールの膨大な割合をエクスポートするDLLで構成されています。そのDLLには、ディスクマウントに関する独自のアイデアがあり、* nixスタイルのパス名が好きです。 DLL自体はライセンスされたGPL(商用ライセンスが有料で利用可能ですが)であり、Cygwin環境で構築されたプログラムはデフォルトでそれを必要とするため、考慮する必要があります。もう1つの要因は、Cygwinは通常のWindowsユーザーには親切ではないため、Unix以外のユーザーが対処するのが難しくなります。しかし、クロスプラットフォームの開発者にとって、CygwinはあなたのMakefileに必要な通常の疑わしいユーティリティプログラムをすべて手に入れるので本当に便利で、MinGW32ネイティブWindowsターゲットGCCとCygwin環境をターゲットとするGCCが含まれています。
MinGW32は、GCCコンパイラを移植してネイティブのWindows実行ファイルとして動作させることができた移植プロジェクトです。それらが提供するヘッダーファイルと共に使用される場合、現代のWindowsインストールに付属しているCランタイムDLLを介してほぼすべてのWindows APIを使用することができます。
MSYSは、一般的な* nix Makefileによって存在すると思われる最小限のユーティリティセット(* nixシェルで始まる)を含む軽量フォークのCygwinです。 Cygwinとは異なり、MSYSは、デフォルトターゲットがネイティブWindows APIであるように設定されています。
私はここでヒントを得ようとしていますが、おそらく平らであると言わなければならないのは、互換性の問題が使用する方言で終わらないということです。
Makefile言語自体は、使用可能なコマンドシェルに大きく依存しています。そして、最も重要なプロジェクトMakefileは、* nixの多くのcpやrmなどのコアユーティリティを使用して終了します。
私は、GnuWin32ビルドから始めて、MinGW32とMSYSをインストールすることを強くお勧めします。 MSYSとlinuxの両方で動作するMakefileを書くのは比較的簡単で、少数のプラットフォーム固有のロジックしか必要としません。
makefileの形式に問題がありますか? あなたのmakefileが、Windows上に存在しないか、何かを実行しようとしているいくつかのLinuxライブラリを参照している可能性があります。 MySQLとのリンクのために、通常は 'mysql_config --libs'を実行してMySQLライブラリのリストを取得します。 – qrdl
NMakeは、さまざまな* nixバージョンがお互いにあるよりも、* nixバージョンのmakeと互換性がありません。 NMakeとmakeの両方で動作するファイルを書くことは可能ですが、いくつかの実際のmakeがWindowsで利用可能であるため、これは価値がありません。 makeが選択されると、残りのコマンドの問題が表示されます。 – RBerteig