前提
C言語のmakefileを使用してビルドを試みていますが、エラーが出て解決できずにいます。。
使用している環境は、VSCodeとMingwを使っています
実現したいこと
複数のファイルをmakeコマンドを使用してビルドしようとしています。
ファイル間の関係としては、mainC内にmain関数が記載されており、
そこでtestAdd,testPowで定義した関数をコールしています。
コマンドプロンプト上でビルドする分には問題なく動くのですが、
makefileから実施しようとすると、インクルードがうまくできていないみたいです。。
おそらくmakefileの書き方が悪いと思うのですが、自分では解決までたどり着けないので、ご助力願います!!
- コマンドプロンプト上で試したコマンド →これは正常に動作する
gcc -I./src mainC.c src/testAdd.c src/testPow.c -o main
- フォルダ構造
work
├src
│├testAdd.c
│├testAdd.h
│├testPow.c
│└testPow.h
├maicC.c
└Makefile
発生している問題・エラーメッセージ
C:\Users\zeroc\work\envClang>mingw32-make -f Makefile gcc -c -o mainC.o mainC.c mainC.c:3:10: fatal error: testAdd.h: No such file or directory 3 | #include "testAdd.h" | ^~~~~~~~~~~ compilation terminated. <builtin>: recipe for target 'mainC.o' failed mingw32-make: *** [mainC.o] Error 1
makefileの内容
#ソースファイル SRC = src/testAdd.c src/testPow.c mainC.c #オブジェクトファイル OBJS=$(SRC:.c=.o) #作成する実行ファイル TARGET=target.exe #Cコンパイラ CC=gcc #コンパイルオプション #CFLAGS=-Wall -O3 #-Wall はワーニングを表示、 -O3 は最適化オプション CFLAGS= #LDFLAGS=-mwindows #インクルードフォルダ INC = -I./src #削除コマンド RM=del #分割コンパイル(オブジェクトファイル作成) # $@ ターゲットファイル(ここではオブジェクトファイル)名 # $< 最初の依存関係の名前 %.o: %.c %.h $(CC) $(CFLAGS) $(INC) -o $@ -c $< #デフォルトターゲット .PHONY : all all: $(TARGET) # リンク # $@ ターゲットファイル(ここでは target.exe)名 $(TARGET): $(OBJS) $(CC) $(OBJS) $(LDFLAGS) -o $@ #オブジェクトファイルをすべて削除 .PHONY : clean clean: $(RM) $(OBJS)
mainC.c
c
1//sample code c 2#include <stdio.h> 3#include "testAdd.h" 4#include "testPow.h" 5 6int main(void) 7{ 8 double a = 3; 9 double b = 2; 10 double ret1,ret2; 11 12 ret1 = testAdd(a,b); 13 ret2 = testPow(a,b); 14 15 // check 16 printf("ret1 = %.2f, ret2 = %.2f",ret1,ret2); 17 18 return 0; 19}
試したこと
コマンドプロンプト上で以下のビルドコマンドは正常に動作することは確認済みです。
gcc -I./src mainC.c src/testAdd.c src/testPow.c -o main
以上です。よろしくお願いします!!

回答3件
あなたの回答
tips
プレビュー