makefileでの「../」の意味って?
KMochidaと申します。
makefileについても質問なのです。
Win2k上に
http://hp.vector.co.jp/authors/VA018507/gccds2k.zip
↑取説
http://hp.vector.co.jp/authors/VA018507/gds2k1127.lzh
↑本体
をインストールしてコンパイルテストを行っています。
C:/cygwin/gcc/gds2k1127/sn216/matsui/test.cppをこしらえて、
Makefileを下記のように作成しました。
CC = C:/cygwin/gcc/GDS2K1~1/gds2k/BIN/g++.exe
AR = C:/cygwin/gcc/GDS2K1~1/gds2k/BIN/ar.exe rcs
RESC = C:/cygwin/gcc/GDS2K1~1/gds2k/BIN/windres.exe
DLLTOOL = C:\cygwin\gcc\GDS2K1~1\gds2k\BIN\dlltool.exe
INCS = -include
'C:/cygwin/gcc/GDS2K1~1/gds2k/include/mladebug.h' -IC:/cygwin/gcc/gds2k1127/
sn216/sn32/include
RES_INCS =
LIBS = C:/cygwin/gcc/gds2k1127/sn216/sn32/src/obj/libsn.a
CFLAGS = -O2
CFLAGS2 = -DNDEBUG -ansi -Wall -Werror
LFLAGS =
TARGET = exe
all : build
build : C:/cygwin/gcc/gds2k1127/sn216/sn32/../matsui/test.$(TARGET)
OBJS = C:/cygwin/gcc/gds2k1127/sn216/matsui/../matsui/test.opp
C:/cygwin/gcc/gds2k1127/sn216/sn32/../matsui/test.$(TARGET) : $(OBJS)
$(CC) $(CFLAGS) $(CFLAGS2) -o '$@' $(OBJS) $(LIBS)
C:/cygwin/gcc/gds2k1127/sn216/matsui/../matsui/test.opp:
C:/cygwin/gcc/gds2k1127/sn216/sn32/../matsui/Makefile
C:/cygwin/gcc/gds2k1127/sn216/matsui/test.cpp
C:/cygwin/gcc/gds2k1127/sn216/matsui/../matsui/test.opp:
C:/cygwin/gcc/gds2k1127/sn216/matsui/test.cpp
$(CC) $(CFLAGS) $(CFLAGS2) $(INCS) -c '$<' -o '$@'
これで上手く実行ファイルも生成されました。
C:\cygwin\gcc\gds2k1127\sn216\matsui>C:\cygwin\gcc\GDS2K1~1\gds2k\Bin\make.e
xe
C:/cygwin/gcc/GDS2K1~1/gds2k/BIN/g++.exe -O2 -DNDEBUG -ansi -Wall -Werror -i
nclu
de
'C:/cygwin/gcc/GDS2K1~1/gds2k/include/mladebug.h' -IC:/cygwin/gcc/gds2k1127/
s
n216/sn32/include -c 'C:/cygwin/gcc/gds2k1127/sn216/matsui/test.cpp' -o
'C:/cygw
in/gcc/gds2k1127/sn216/matsui/../matsui/test.opp'
C:/cygwin/gcc/GDS2K1~1/gds2k/BIN/g++.exe -O2 -DNDEBUG -ansi -Wall -Werror -o
'C:
/cygwin/gcc/gds2k1127/sn216/sn32/../matsui/test.exe'
C:/cygwin/gcc/gds2k1127/sn2
16/matsui/../matsui/test.opp
C:/cygwin/gcc/gds2k1127/sn216/sn32/src/obj/libsn.a
C:\cygwin\gcc\gds2k1127\sn216\matsui>C:\cygwin\Bin\make
C:/cygwin/gcc/GDS2K1~1/gds2k/BIN/g++.exe -O2 -DNDEBUG -ansi -Wall -Werror -i
nclu
de
'C:/cygwin/gcc/GDS2K1~1/gds2k/include/mladebug.h' -IC:/cygwin/gcc/gds2k1127/
s
n216/sn32/include -c 'C:/cygwin/gcc/gds2k1127/sn216/matsui/test.cpp' -o
'C:/cygw
in/gcc/gds2k1127/sn216/matsui/../matsui/test.opp'
C:/cygwin/gcc/GDS2K1~1/gds2k/BIN/g++.exe -O2 -DNDEBUG -ansi -Wall -Werror -o
'C:
/cygwin/gcc/gds2k1127/sn216/sn32/../matsui/test.exe'
C:/cygwin/gcc/gds2k1127/sn2
16/matsui/../matsui/test.opp
C:/cygwin/gcc/gds2k1127/sn216/sn32/src/obj/libsn.a
、、、で本題なのですが
「../」は1つ上のディレクトリに移動するという意味ですよね。
数箇所に「../」かありますが例えば
build : C:/cygwin/gcc/gds2k1127/sn216/matsui/test.$(TARGET)
としてみても、根本的なパスは同じ筈なのに
C:\cygwin\gcc\gds2k1127\sn216\matsui>C:/cygwin/gcc/GDS2K1~1/gds2k/BIN/make.e
xe
C:\cygwin\gcc\GDS2K1~1\gds2k\Bin\make.exe: *** No rule to make target
`C:/cygwin
/gcc/gds2k1127/sn216/matsui/test.exe', needed by `build'. Stop.
や
C:\cygwin\gcc\gds2k1127\sn216\matsui>C:\cygwin\Bin\make
make: *** No rule to make target
`C:/cygwin/gcc/gds2k1127/sn216/matsui/test.exe'
, needed by `build'. Stop.
というエラーに見舞われてしまいます。
build : C:/cygwin/gcc/gds2k1127/sn216/sn32/../matsui/test.$(TARGET)
と
build : C:/cygwin/gcc/gds2k1127/sn216/matsui/test.$(TARGET)
とは意味が違うのでしょうか?
(Windows環境でのmakeのみ問題でlinuxのmakeでは問題無しでしたら失礼致します)
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735