【发布时间】:2015-05-24 01:48:27
【问题描述】:
我的目录结构如下: 生成文件 源/ 文件 1.cpp 文件 2.cpp 公司/ 文件 1.h 文件 2.h 现在我想编写一个make规则来创建一个'objs'目录并将我所有的对象(.o文件)放在'objs'中,然后用它构建一个库。我想一次性完成,而不是为每个 .cpp 文件编写一个规则。 这是我尝试过的:
SRC_DIR:= src/
INC_DIR:=inc/
SRC_PATH:=$(foreach var, $(SRC_DIR), $(wildcard $(var)*.cpp))
OBJ_PATH:=$(patsubst %.cpp,%.o,$(SRC_PATH))
OBJ_PATH:=$(notdir $(OBJ_PATH))
OBJ_DIR:=./objs
OBJ_PATH:=$(addprefix $(OBJ_DIR)/,$(OBJ_PATH))
TARGET:=libcommon.a
all:$(TARGET)
$(TARGET): $(OBJ_PATH)
ar -rcs $(TARGET) $(OBJ_PATH)
$(OBJ_PATH): $(SRC_PATH)
mkdir -p $(OBJ_DIR)
$(CXX) -o $(OBJ_PATH) -c $(SRC_PATH) -I$(INC_DIR)
但我收到此错误:
[root@localhost common]# make
mkdir -p ./objs
g++ -o ./objs/file1.o ./objs/file2.o -c src/file1.cpp src/file2.cpp -Iinc/
g++: ./objs/file1.o: No such file or directory
g++: cannot specify -o with -c or -S with multiple files
我在这个主题上做了很多搜索。没有得到任何帮助。请指出我正在做的错误。
【问题讨论】: