質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
makefile

make は、プログラムのビルド作業を自動化するツールです。コンパイル、リンク、インストール等のルールを記述したテキストファイルをmakefileと呼び、このルールに従ってmakeが自動的にビルドを実行する。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

1661閲覧

makefile入門者 C++で真面目にmakefileを書くにはどうすればいいのか?

退会済みユーザー

退会済みユーザー

総合スコア0

makefile

make は、プログラムのビルド作業を自動化するツールです。コンパイル、リンク、インストール等のルールを記述したテキストファイルをmakefileと呼び、このルールに従ってmakeが自動的にビルドを実行する。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/09/12 09:01

編集2021/09/12 09:51

###知りたいこと
1, 提示サイトを参考にコピペして自分なりに要らないものを取っ払ったのですが下記のエラーの取り方がわかりません。
2,makefileにおけるソースファイルとヘッダーファイルの関係が知りたい。
3,ヘッダーファイルを変更しても再コンパイルされない状況が発生したのですがこれはmakefileでどうやって対処したらいいのか知りたい。
4,

###質問内容
提示のmakefileですが複数のヘッダーファイルとソースファイルがあるプロジェクトでどうやったら正確にコンパイルできるのでしょうか?
ヘッダーを更新してもコンパイルされないという状況が発生したり以下のようなエラーが発生したりとどうもうまく記述できません。

###参考サイト
参考サイトA: https://www.usagi1975.com/041620182112/

$ ls AAEditor Edit.o Entry.o Main.o Scene.o bin header lib log.txt makefile obj source

Error

1$ make 2g++ -c -MMD -MP source/Edit.cpp source/Main.cpp source/Scene.cpp source/Entry.cpp 3cc -Wall -L/usr/lib -g -fPIC %.d.o -o %.d 4cc: error: %.d.o: そのようなファイルやディレクトリはありません 5cc: fatal error: no input files 6compilation terminated. 7g++ -c -MMD -MP source/Edit.cpp source/Main.cpp source/Scene.cpp source/Entry.cpp 8g++ %.o -o main 9g++: error: %.o: そのようなファイルやディレクトリはありません 10g++: fatal error: no input files 11compilation terminated. 12make: *** [makefile:19: main] エラー 1 13

makefile

1CXX =g++ 2CXXFLAGS = -Wall -g -fpic -I. -I/usr/include -std=c++14 3LDFLAGS = -Wall -L/usr/lib -g -fPIC 4 5LIBS = -lstdc++ -lm 6LIBS2 = -lstdc++ -lm -lusb 7 8TARGET2 = main 9SRCS = source/Edit.cpp source/Main.cpp source/Scene.cpp source/Entry.cpp 10OBJS :=%.o 11DEPS :=%.d 12 13TARGET1 =libhoge.so 14LIBOBJS :=%.o 15LIBDEPS :=%.d 16 17# 実行ファイル作成 18$(TARGET2): $(OBJS) 19 $(CXX) $^ -o $@ 20 21$(OBJS): $(SRCS) 22 $(CXX) -c -MMD -MP $(SRCS) 23-include $(DEPS) $(LIBDEPS) 24

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2021/09/12 09:11

> 参考サイトを見ると初学者の自分は見慣れない構文が多く処理が追えません。 真面目に構文を調べる気はないのですか?
dodox86

2021/09/12 09:37

> 参考サイトを見ると初学者の自分は見慣れない構文が多く処理が追えません。w 草を生やして何なのでしょう。見慣れないから分からず、やらないのであればいつになったら見慣れ、分かるようになるのですか。いい加減にしてください。
dodox86

2021/09/12 10:02

> 提示サイトを参考にコピペして自分なりに要らないものを取っ払った 言葉の使い方でおおむね向き合う姿勢が分かりますが、それがいけないということがきっと通じることが無いのでしょう。残念なことです。行きがかりの捨て垢質問ならまだしも、これまでを踏まえてそうではないはずなのだから、個人的には理解し難いですね。
guest

回答2

0

テキトーに書いたらこんなエラーが出た、と他人に解決を丸投げするんではなく、

まずは、あなたが理解している範囲で書いていき、あなたが理解してるように動くのを確認していきましょう

投稿2021/09/12 09:31

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2021/09/12 09:52

どのファイルが変更されたときに、Bit.oを生成し直すのか、ってのを考えればいいです。 Bit.cpp とBit.hpp が変更されたら、ってのはすぐ思いつきますが、あと、そのコードで他のヘッダやソースファイルを参照してるなら、それらのファイルも記述する必要があります 他のところでライブラリを生成していて、そのライブラリを参照してるという場合は、そのライブラリも指定する必要があります #変更や修正されないファイル(たとえば stdio.h など)は指定の必要はないです
guest

0

ベストアンサー

Bit.o: そのようなファイルやディレクトリはありません

拡張子がcppc++でないファイルをC++ソースとして認識させるためには、そういう指定が必要です。

Makefile

1Bit.o: header/Bit.hpp 2 $(CC) -c -x c++ $^

参考サイトを見ると初学者の自分は見慣れない構文が多く処理が追えません。

コメントも付いてますが、構文を理解するか、自分でMakefileを書く事をあきらめるか、二択ですね。

投稿2021/09/12 09:33

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問