我们有一些源处理工具可以生成来自多个'片段的原始程序集文件等内容。
使用make
中的这些工具时,我们可以通过让源处理工具发出依赖文件来确保最新的构建,就像gcc
与-MD
一样{1}}标志。
例如,假设我有一个程序集模板文件Frob.asmtmpl
,以及一个名为asm_templater
的模板引擎,它就像一个增强的C预处理器。
我们生成asm_templater -d Frob.asmtmpl
,生成Frob.s
和Frob.d
。后者是一个makefile依赖片段,如下所示:
Frob.s: Frob.asmtmpl ThingIncludedByFrob.asmincl OtherThingIncluded.asmincl
在基于makefile的构建系统中,如果存在,我们会include(Frob.d)
告诉你Frob.asmtmpl
的实际代表是什么。
我们如何为CMake做类似的事情?似乎CMake的两次通过性质(生成然后构建),并且需要支持多代引擎,得出的结论是必须有某种原生的CMake方式来做到这一点,我还没有弄清楚。
我需要以某种方式向CMake表明Frob.s
之间存在依赖关系。和ThingIncludedByFrob.asmincl
,但这些都由Frob.asmtmpl
的内容决定,因此需要通过工具提取。