首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在make上添加路径前缀

在make上添加路径前缀
EN

Stack Overflow用户
提问于 2011-03-03 05:18:34
回答 2查看 13.1K关注 0票数 15

在我的makefile中,我有一个对象变量。我需要在每个.o文件前面加上obj/。我该怎么做呢?

代码语言:javascript
复制
CC=g++
CFLAGS=-C -Wall
LDFLAGS=-lsqlite3 -lpthread -ldl
SOURCES=main.cpp Database.cpp actionInit.cpp TileSet.cpp Player.cpp
OBJECTS=$(SOURCES:.cpp=.o)

EXECUTABLE=mahjong-counter

all: bin $(OBJECTS) $(EXECUTABLE)

bin:
    mkdir -p bin

%.o: %.cpp
    $(CC) $(LDFLAGS) $< -c -o $@

$(EXECUTABLE): $(OBJECTS)
    $(CC) $(LDFLAGS) $(OBJECTS) -o $(EXECUTABLE)

clean:
    rm $(OBJECTS)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-03 05:32:23

你想要CXX,而不是CC。CC是用于C编译器的,而不是C++编译器的,我相信下面的代码应该可以工作:

代码语言:javascript
复制
CXX=g++
CXXFLAGS=-C -Wall
LDFLAGS=-lsqlite3 -lpthread -ldl

OBJ_DIR = obj
BIN_DIR = bin
EXECUTABLE=mahjong-counter

SOURCES= main.cpp Database.cpp actionInit.cpp TileSet.cpp Player.cpp
OBJECTS= $(SOURCES:%.cpp=$(OBJ_DIR)/%.o)

all: dirs $(OBJECTS) $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS)
    $(CC) $(LDFLAGS) $(OBJECTS) -o $(EXECUTABLE)

$(OBJ_DIR)/%.o: %.cpp
        $(CXX) $(CXXFLAGS) $< -o $@

dirs:
    mkdir -p $(BIN_DIR)
    mkdir -p $(OBJ_DIR)

.PHONY: dirs all
票数 19
EN

Stack Overflow用户

发布于 2011-03-03 05:33:58

在赋值OBJECTS时,您可以使用更具表现力的替换版本

代码语言:javascript
复制
OBJECTS=$(SOURCES:%.cpp=obj/%.o)

或者使用标准的文本转换函数

代码语言:javascript
复制
OBJECTS=$(addprefix obj/,$(SOURCES:.cpp=.o))
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5173611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档