0

makefile でパスを指定することに疑問があり、明確にしたいと思います。

私の構造がこのように作られているとします:

/home/machinename/softwarefolder/mainfolder
--------------------------------------------> /subfolder1
--------------------------------------------> /subfolder2

これは、subfolder1 と subfolder2 の両方が /mainfolder 内の同じネスト レベルにあることを意味します。

現在、サブフォルダー 2 内で何かをコンパイルしています (これは、そのフォルダーに cd することを意味します)。これは、私の場合はサブフォルダー 1 にあるパスを指すマクロを含む構成ファイルを使用します。

サブフォルダー 2 内のプログラムがコンパイルするために使用するこの構成ファイルは、./configure の実行後にプログラム自体によって自動的に生成されます。

自動生成された構成ファイルには、このように定義されたマクロがあります

MACRO    =  ../subfolder1

2 つのドット (..) は、cd コマンドのように「1 ステップ戻る」ことを示していますか (したがって、configure ファイルは正しいフォルダーを指しています)。

最初の質問に対する答えが「いいえ」の場合、なぜ前述のマクロを

MACRO    =  /home/machinename/softwarefolder/mainfolder/subfolder1

コンパイル時に「セパレータがありません」というエラーが発生しますか?

おそらく些細な質問で申し訳ありませんが、助けてくれてありがとう!

4

1 に答える 1

0

Make は、ほとんどの場合、変数の内容を解釈しません。がどのように解釈されるかという問題は..、変数がどこで使用されるかに完全に依存します。のようなパスが意味のある場所で使用されている場合は../subfolder1、そのように解釈されます。そうでなければ、そうではありません。

がどのように使用されているかを示していない$(MACRO)ため、私たちはお手伝いできません。しかし、一般的に、あなたの質問に対する答えは「はい、親ディレクトリに移動することを意味します」です。

2番目の質問については、その1行だけを変更すると「区切り文字がありません」というエラーが発生するとは想像できません。おそらく、編集者は、TAB を削除してスペースを置き換えたり、TAB を追加したりするなど、ファイルに「役立つ」他の変更を加えましたか? TAB 文字は makefile では特別です。

2 番目の質問のヘルプが必要な場合は、(a) 受け取った正確なエラー (カット アンド ペーストが最適です)、および (b) エラー メッセージで指定された行番号のメイクファイル内のルールの正確なテキストを提供する必要があります。

于 2013-05-16T15:07:25.293 に答える