使用不同分支构建 NodeMCU 固件

Building NodeMCU Firmware Using Different Branches

我能够为 NodeMCU 的所有分支构建固件,https://github.com/nodemcu/nodemcu-firmware 只有当我将它们克隆到单独的本地目录时。

当我尝试只有一个文件夹并使用 git checkout 分支时,我只能构建主固件。当我签出分支时,其他文件会更改以匹配分支,但我无法构建固件。也许这就是它的方式?我希望我可以使用 git checkout master 然后 make 构建主固件,然后使用 git checkout dev 然后 make 构建开发固件。文件确实会更改以正确反映分支,所以我不确定为什么它不起作用。

首先,您不必进行多次克隆。
您可以只制作一个克隆,然后使用 git worktree.

在各自的文件夹中检出这些分支

其次,当您签出一个分支时,在第一次编译期间创建的其他文件不会被删除,这可能会干扰您的第二次编译。

git clean -n -d -x -f预览您可以从新签出的工作树中清除的内容。

确定后,删除 -n(dry-run 选项)。如果您不想删除被忽略的文件,也请删除 -x

虽然@VonC 的回答确实有帮助,而且有点 "correct",但也很笼统。

您可能遇到的问题是 Git 子模块。我们将它们用于例如u8g2 和 ucg。查看相应分支中的 .gitmodules 了解详细信息。

切换分支时需要更新子模块。 git worktree 在这里会非常方便,但由于仍然存在影响我从未尝试过的子模块处理的错误。

我怀疑您遵循了 https://nodemcu.readthedocs.io/en/master/build/#git. For the ESP32 branch 中的说明,我们记录了更多构建说明,因为云构建器尚不支持它。

结论:确保每次切换分支时运行 git submodule update --recursive