【问题标题】:How to link only some files to objects with Makefile (g++)?如何使用 Makefile (g++) 仅将一些文件链接到对象?
【发布时间】:2014-08-02 02:10:58
【问题描述】:

我有一个将源代码编译为目标文件的 Makefile,它可以工作:

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
    g++ $(FLAGS) $(INCLUDES) -c -o $@ $<

但它包括我的 src 目录中的所有文件。假设我有一些文件(例如“x.cpp”)不希望作为编译的一部分。我想手动指定一些文件来编译成对象。例如,

SRC = src/one.cpp src/two.cpp
OBJ = obj/one.o obj/two.o
$(OBJ_DIR)/%.o: $(SRC)
    g++ $(FLAGS) $(INCLUDES) -c -o $@ $<

我会得到一个.o,两个.o,但不是 x.o。这有可能吗?

【问题讨论】:

  • LINKED = ... 之类的东西,错过了x.o

标签: c++ gcc makefile


【解决方案1】:

定义模块列表,构造你真正想要的对象列表:

MODULES = one two
OBJECTS = $(addprefix ${OBJ_DIR}/, $(addsuffix .o, ${MODULES}))

all : ${OBJECTS}

将规则限制在列表中:

${OBJECTS}: $(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
        g++ $(FLAGS) $(INCLUDES) -c -o $@ $<

【讨论】:

  • 完美,正是我需要的。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-13
  • 2012-11-17
相关资源
最近更新 更多