为什么 make file 无法从特定的 src 目录中获取源文件?
Why make file not able to get the source file from specific src directory?
我对 linux 很陌生,正在学习 makefile
以下是我的目录结构
calculator
|
|---src
|--Calc
(multiply.cpp sum.cpp)
|-- main.cpp
|-- Makefile
|---lib
生成文件
LIB_PATH=./../lib
HEAD_PATH=./../head
SRC_DIR=./calc
all: main
main: main.o calc.a
g++ main.o -L$(LIB_PATH) -l:calc.a
main.o: main.cpp
g++ -c -I$(HEAD_PATH) main.cpp
calc.a: Multiply.o Sum.o
ar -rcs $(LIB_PATH)/calc.a Multiply.o Sum.o
Multiply.o: Multiply.cpp
g++ -c -I$(HEAD_PATH) $(SRC_DIR)/Multiply.cpp
Sum.o: Sum.cpp
g++ -c -I$(HEAD_PATH) $(SRC_DIR)/Sum.cpp
我当前目录是src
我在命令行上运行 make 命令。
并出现错误
make: *** No rule to make target `Multiply.cpp', needed by `Multiply.o'. Stop.
如果我将所有源文件放在 src 而不是 calc 文件夹中,一切正常。
我在命令提示符下尝试并执行了每一行编写的 makefile 它在那里工作正常
我怎么知道从 calc 文件夹中选择 src?
在规则中指定路径:
Multiply.o: $(SRC_DIR)/Multiply.cpp
或者,将 VPATH
设置为 SRC_DIR
:
VPATH = $(SRC_DIR)
哦,文件系统不区分大小写。如果上面 tree
的输出是复制粘贴的,你必须说 multiply.cpp
而不是 Multiply.cpp
,Sum.cpp
/sum.cpp
和.o
个文件。
我对 linux 很陌生,正在学习 makefile
以下是我的目录结构
calculator
|
|---src
|--Calc
(multiply.cpp sum.cpp)
|-- main.cpp
|-- Makefile
|---lib
生成文件
LIB_PATH=./../lib
HEAD_PATH=./../head
SRC_DIR=./calc
all: main
main: main.o calc.a
g++ main.o -L$(LIB_PATH) -l:calc.a
main.o: main.cpp
g++ -c -I$(HEAD_PATH) main.cpp
calc.a: Multiply.o Sum.o
ar -rcs $(LIB_PATH)/calc.a Multiply.o Sum.o
Multiply.o: Multiply.cpp
g++ -c -I$(HEAD_PATH) $(SRC_DIR)/Multiply.cpp
Sum.o: Sum.cpp
g++ -c -I$(HEAD_PATH) $(SRC_DIR)/Sum.cpp
我当前目录是src 我在命令行上运行 make 命令。 并出现错误
make: *** No rule to make target `Multiply.cpp', needed by `Multiply.o'. Stop.
如果我将所有源文件放在 src 而不是 calc 文件夹中,一切正常。 我在命令提示符下尝试并执行了每一行编写的 makefile 它在那里工作正常
我怎么知道从 calc 文件夹中选择 src?
在规则中指定路径:
Multiply.o: $(SRC_DIR)/Multiply.cpp
或者,将 VPATH
设置为 SRC_DIR
:
VPATH = $(SRC_DIR)
哦,文件系统不区分大小写。如果上面 tree
的输出是复制粘贴的,你必须说 multiply.cpp
而不是 Multiply.cpp
,Sum.cpp
/sum.cpp
和.o
个文件。