Makefileにて、include命令のときだけエラー

実現したいこと

作業ディレクトリにあるサブディレクトリ内のMakefileを、作業ディレクトリ直下のMakefileから呼び出したい

前提

Gitのsubmodule機能を使っているので、サブディレクトリのMakefileを実行しなくてはならない状況です。以下はその再現になります。なお、サブディレクトリ内でmakeしたときは問題なくビルドできます。

試したこと

実際のものとは異なりますが、簡略化して再現したものです。
ディレクトリ階層↓

作業ディレクトリ(.) |-Sub | |-sub.c | '-Makefile |-Makefile '-main.c
  • ./Makefile

makefile

1include Sub/Makefile 2 3main.exe: main.o 4 cd Sub 5 make 6 cd .. 7 x86_64-w64-mingw32-gcc -shared -o $@ $^ Sub/sub.dll 8 9main.o: main.c 10 x86_64-w64-mingw32-gcc -c -o $@ $^

c

1#include <stdio.h>2 3int add(int x , int y);4 5int main()6{7 const int x = 4 , y = 5;8 printf("%d + %d = %d" , x , y , add(x , y));9 10 return 0;11}

  • ./Sub/Makefile

makefile

1sub.dll: sub.o 2 x86_64-w64-mingw32-gcc -shared -o $@ $^3 4sub.o: sub.c 5 x86_64-w64-mingw32-gcc -c -o $@ $^

  • ./Sub/sub.c

c

1int add(int x , int y) { return x + y; }

発生したエラー

上図の作業ディレクトリ内でmakeするとmake: *** 'sub.o' に必要なターゲット 'sub.c' を make するルールがありません. 中止.となります。

コメントを投稿

0 コメント