【问题标题】:Why make file not able to get the source file from specific src directory?为什么 make file 无法从特定的 src 目录获取源文件?
【发布时间】:2015-01-05 05:36:26
【问题描述】:

我是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?

【问题讨论】:

    标签: linux makefile


    【解决方案1】:

    在规则中指定路径:

    Multiply.o: $(SRC_DIR)/Multiply.cpp
    

    或者,将VPATH 设置为SRC_DIR

    VPATH = $(SRC_DIR)
    

    哦,文件系统不区分大小写。如果上面tree 的输出是复制粘贴的,则您必须说multiply.cpp 而不是Multiply.cppSum.cpp/sum.cpp.o 文件也是如此。

    【讨论】:

      猜你喜欢
      • 2013-01-16
      • 1970-01-01
      • 1970-01-01
      • 2018-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-07
      • 1970-01-01
      相关资源
      最近更新 更多