0

如何为所有源文件 (c/cpp) 添加先决条件规则?如果整个 make 文件由我完成,那会很简单,但我使用的 android 构建系统对我隐藏了大部分内容。

我想这样做的原因:我添加了一个规则来生成我的头文件,该头文件包含在一些 c/cpp 文件中。只要已经生成了依赖项,它就可以正常工作。但是,对于一个干净的项目,在编译之前没有可用的依赖信息,因此 make 不会为一个干净的项目运行我的规则,因为它不知道某些 cpp 文件依赖于一个尚不存在的头文件. 这就是为什么我需要添加某种规则来确保我的先决条件规则在任何编译发生之前运行。

到目前为止,我这样做了:

include $(CLEAR_VARS)

.PHONY: ForceRule
MyHeader.h: ForceRule
ForceRule: CreateHeader.sh
    $(shell CreateHeader.sh MyHeader.h)

# below is standard android way to build shared lib from cpp files:
LOCAL_SRC_FILES: File1.cpp File2.cpp
LOCAL_PATH := $(CURDIR)

include $(BUILD_SHARED_LIBRARY)
4

1 回答 1

0

很难确定黑盒生成文件(我认为你的方法是错误的),但你可以试试这个:

MyHeader.h: CreateHeader.sh
    $(shell CreateHeader.sh MyHeader.h)

%.o: %.cpp MyHeader.h
于 2013-01-09T21:51:01.827 回答