首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Boost-build/BJam语言-检查标志的值

Boost-build/BJam语言-检查标志的值
EN

Stack Overflow用户
提问于 2012-07-26 17:40:12
回答 1查看 401关注 0票数 0

我需要编辑一个用于特定项目的boost构建所使用的.jam文件。关于布贾姆语言的官方手册上说:

  1. 关心DEF文件的工具集之一是msvc。下面的一行应该添加到其中。旗msvc.link DEF_FILE;
  2. 由于DEF_FILE变量不被msvc.link操作使用,我们需要修改它为:操作链接绑定DEF_FILE { $(.LD) ./DEF:$(DEF_FILE) .}注意绑定DEF_FILE部分。它告诉bjam将DEF_FILE中的内部目标名转换为链接中的相应文件名。

所以很明显,用ECHO打印DEF_FILE是行不通的。如何将其展开为字符串变量或实际可以检查的内容?

我需要做的是打印一条错误消息,并在没有设置标志的情况下中止构建。我试过:

代码语言:javascript
复制
if ! $(DEF_FILE)
{
    errors.user-error "file not found" ;
    EXIT ;
}

但是这个“如果”永远是真的

我还尝试将"if!$_DEF_FILE {.}“放入包含的”action“中,但显然它被忽略了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-28 04:57:57

我不确定我是否理解你们面临的全球任务。但是,如果您想要添加对非空DEF_FILE的检查--扩展您引用的文档位,则需要在msvc.link函数中添加签入。

如果您有一个命令行模式(用‘actions’指定),那么它的内容就是传递给OS执行的内容。但是,您也可以具有相同名称的函数,该函数在生成操作之前将被调用。例如,下面是当前代码库的内容:

代码语言:javascript
复制
rule link.dll ( targets + : sources * : properties * )
{
    DEPENDS $(<) : [ on $(<) return $(DEF_FILE) ] ;
    if <embed-manifest>on in $(properties)
    {
        msvc.manifest.dll $(targets) : $(sources) : $(properties) ;
    }
}

您可以另外修改此代码以:

代码语言:javascript
复制
if ! [ on $(<) return $(DEF_FILE) ] {
       ECHO "error" ;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11674918

复制
相关文章

相似问题

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