首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CodeSynthesis XSD提升构建v2

使用CodeSynthesis XSD提升构建v2
EN

Stack Overflow用户
提问于 2014-08-12 03:17:28
回答 1查看 121关注 0票数 0

我正在尝试学习如何使用boost build。对于初学者,我想在一个xsd文件上运行codesynthesis xsd工具来生成c++代码。此工具将一个文件作为输入,并生成多个输出文件。我很难弄清楚如何使用boost build来做到这一点,而且我找不到任何与我想要做的非常相似的例子。有人能在这里提供一些见解吗?我已经在下面附上了我的代码。谢谢!

代码语言:javascript
复制
import path ;                                                                                                                          
import type ;                                                                            
import generators ;                                                                      

type.register XSD : xsd ;                                                                

generators.register-standard xsd.compilexsd : XSD : CPP ;                                

module xsd                                                                               
{                                                                                        
    actions compilexsd                                                                   
    {                                                                                    
        xsd cxx-tree \                                                                   
            --show-sloc \                                                                
            --generate-doxygen \                                                         
            --generate-forward \                                                         
            --generate-serialization \                                                                                                     
            --output-dir [path.parent($(<))] \                                        
            $(>)                                                                      
    }                                                                                 
}  

exe app : main.cpp test.xsd ;
EN

回答 1

Stack Overflow用户

发布于 2014-08-12 05:57:51

大约七年前,当我试图从结构规范生成代码时,遇到了一个几乎相同的问题。Boost.Build允许声明单个文件的直接转换。

例如:

代码语言:javascript
复制
 .y --> .cpp --> .obj

然而,没有语法来表达更复杂的依赖树,在这种树中,单个spec文件会生成一整套.cpp文件。解决方法是执行以下操作:

  1. 定义一个库,它列出了所有生成的文件名(这意味着你必须保持这个愚蠢的列表是最新的,这是一个子项目中的“manually)
  2. Define”规则,它是一个依赖项。这样,生成器总是首先运行:

ALWAYS prebuildcmd;PREBUILD_CMD =“您的生成器arg arg arg”;规则Prebuild { local output = SHELL "$(PREBUILD_CMD)“;ECHO $(output);} Prebuild prebuildcmd;

(这意味着脚本不是正常依赖项的一部分,并且必须足够智能,不能在未更改的文件上进行标记)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25250727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档