我有一个源代码树:
/bootloader
/firmware
/system
并希望为固件和引导加载程序管理两个单独的构建,每个构建都使用通用系统源,但编译方式不同(即使用自己的一组选项)。
构建必须是out-of-tree。makepp 明显的“存储库”功能在这里不是解决方案,因为它打破了这个原则。符号链接也不是解决方案,因为它必须在 Windows 上工作。
问题实际上出在共享系统源中,其相对路径结构与其他系统不同,导致通用模式规则不适用于它们:
BUILD_PATH = $(relative_to $(PROJECT_PATH), .)/BUILD/$(relative_to ., $(PROJECT_PATH)) # trick to be able to extend rules for specific files at different subtree levels (if we use Makeppfile for each level)
...
$(BUILD_PATH)/%.o : %.c
...
使用单个 RootMakeppfile 并包含 *.mk 文件(而不是加载它们)的方法也不允许我做这样的事情:
$(BUILD_ROOT_PATH)/*/%.o : %.c
我尝试了很多完全不同的方法。这并不像乍一看那样微不足道。请帮忙。