如何让qmake生成对自定义目标的依赖关系?

问题描述

我正在尝试建立树外版本,因此我可以克隆我的存储库并保持原始状态不变。 我希望qmake允许这样做。预期用途是

git clone <my-sources>
mkdir build && cd build
qmake ../my-sources
make

我有一个引用生成的头文件的源文件

#include "custom/dir/custom.h"
int main(){}

生成custom.h,因此在我定义的test.pro

custom_target_generated_dirs.target = custom/dir
custom_target_generated_dirs.commands = mkdir -p $$custom_target_generated_dirs.target

custom_target_headers.target = $$custom_target_generated_dirs.target/custom.h
custom_target_headers.depends = $$custom_target_generated_dirs.target
custom_target_headers.commands = cat custom.h.template > $$custom_target_headers.target

QMAKE_EXTRA_TARGETS += custom_target_headers custom_target_generated_dirs

SOURCES = client.cpp

运行qmake时,生成的makefile定义相对于源目录相对于文件的依赖关系:

client.o: ../client.cpp ../custom/dir/custom.h
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o client.o ../client.cpp

这使得无法构建树外:我一定不能将生成代码放在源树中。确实,这也没有建立:

~/build$ qmake ../qmaketest/ && make
make: *** No rule to make target '../qmaketest/custom/dir/custom.h',needed by 'client.o'.  Stop.

如何告诉qmake向构建树生成C ++编译依赖项?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)