2017-07-10 8 views
-1

私はcとcppファイルの両方を持つプロジェクトを持っています。私はNMakeを使ってビルドしています。私は2つの推論ルール、各ファイルタイプごとに1つ、cとcppファイルの両方を持つNMakeの推論ルール

{$(dirSrc)}.c{$(dirObj)}.obj: 
    cl /nologo /c /EHsc /Fo$(dirObj)\ $< 

{$(dirSrc)}.cpp{$(dirObj)}.obj: 
    cl /nologo /c /EHsc /Fo$(dirObj)\ $< 

$(binPath): $(dirObj)\*.obj 
    link /nologo /dll /out:$(binPath) $(dirObj)\*.obj 

を持っている場合、私の問題があることのみ、Cファイルは拡張子.cが.SUFFIXESリストの最初でおそらくので、コンパイルされています。

私はもちろん、cファイルの拡張子をcppに変更することもできますが、両方のルールを呼び出す方法が分かっているのか不思議でした。

+0

なぜダウン票ですか? –

答えて

0

私自身の質問に答えるには、2つの別々のディレクトリにコンパイルし、リンカーを実行しているときに両方を指すようにすることが最善の方法でした。

{$(dirSrc)}.c{$(dirObj)\c}.obj: 
    cl /nologo /c /EHsc /Fo$(dirObj)\c\ $< 

{$(dirSrc)}.cpp{$(dirObj)\cpp}.obj: 
    cl /nologo /c /EHsc /Fo$(dirObj)\cpp\ $< 

$(binPath): $(dirObj)\c\*.obj $(dirObj)\cpp\*.obj 
    link /nologo /dll /out:$(binPath) $(dirObj)\c\*.obj $(dirObj)\cpp\*.obj 
関連する問題