小编chr*_*nos的帖子

git 分支在 rebase 后出现分歧

我已经按照这个答案(How to remove/delete a large file from commit history in Git repository?)来删除存储库中一些不需要的大文件。我已经完成了本地副本中所述的所有步骤(因为尝试在原始的原始存储库中执行此操作会导致错误,只要它没有工作树)。尽管如此,当我完成这些步骤(删除文件等)并在本地副本上执行“git status”时,我得到

# On branch master
# Your branch and 'origin/master' have diverged,
# and have 16 and 18 different commit(s) each, respectively.
Run Code Online (Sandbox Code Playgroud)

我不知道如何将更改发送回中央存储库。有谁能够帮助我?

git branch rebase

2
推荐指数
1
解决办法
2063
查看次数

Makefile 来自同一源文件的多个目标,具有不同的标志

我有一个二进制文件,需要使用不同的编译器标志多次构建。因此,我有一个 Makefile 声明如下:

OBJECTS_A := $(addprefix $(OBJFOLDER)/, $(SOURCES:.cpp=.a.o))
OBJECTS_B := $(addprefix $(OBJFOLDER)/, $(SOURCES:.cpp=.b.o))
OBJECTS_C := $(addprefix $(OBJFOLDER)/, $(SOURCES:.cpp=.c.o))
Run Code Online (Sandbox Code Playgroud)

我还定义了一个规则来更改每个 OBJECTS_x 的标志:

$(OBJECTS_B): DEFINES+=-D_B
$(OBJECTS_C): DEFINES+=-D_C
Run Code Online (Sandbox Code Playgroud)

这就是问题发生的地方:如果我单独说明目标,如:

$(OBJFOLDER)/%.a.o: %.cpp
    $(COMPILER) $(CFLAGS) $(INCFOLDER) $(DEFINES) -c $< -o $@

$(OBJFOLDER)/%.b.o: %.cpp
    $(COMPILER) $(CFLAGS) $(INCFOLDER) $(DEFINES) -c $< -o $@

$(OBJFOLDER)/%.c.o: %.cpp
    $(COMPILER) $(CFLAGS) $(INCFOLDER) $(DEFINES) -c $< -o $@
Run Code Online (Sandbox Code Playgroud)

所有作品。但是,如果我将所有规则合并为一个,则仅评估第一个规则:

$(OBJFOLDER)/%.a.o $(OBJFOLDER)/%.b.o $(OBJFOLDER)/%.c.o: %.cpp
    $(COMPILER) $(CFLAGS) $(INCFOLDER) $(DEFINES) -c $< -o $@
Run Code Online (Sandbox Code Playgroud)

我在试运行中得到的是,只有 $(OBJFOLDER)/%.ao 对象被构建,但在链接规则上,每个二进制文件都需要它的对象(因此 b 和 c 二进制文件无法构建)。

有任何想法吗?谢谢!

makefile build targets

2
推荐指数
1
解决办法
2415
查看次数

标签 统计

branch ×1

build ×1

git ×1

makefile ×1

rebase ×1

targets ×1