⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 alias.jam

📁 C++的一个好库。。。现在很流行
💻 JAM
字号:
#  Copyright (C) Vladimir Prus 2003. Permission to copy, use, modify, sell and
#  distribute this software is granted provided this copyright notice appears in
#  all copies. This software is provided "as is" without express or implied
#  warranty, and with no claim as to its suitability for any purpose.

#  This module defines the 'alias' rule and associated class.
#
#  Alias is just a main target which returns its source targets without any 
#  processing. For example::
#
#    alias bin : hello test_hello ;
#    alias lib : helpers xml_parser ;
#
#  Another important use of 'alias' is to conveniently group source files::
#
#    alias platform-src : win.cpp : <os>NT ;
#    alias platform-src : linux.cpp : <os>LINUX ;
#    exe main : main.cpp platform-src ;
# 
#  Lastly, it's possible to create local alias for some target, with different
#  properties::
#
#    alias big_lib : : @/external_project/big_lib/<link>static ;
#

import targets ;
import "class" : new ;
import property ;
import errors : error ;
import type : type ;
import regex ;
import project ;
import property-set ;

class alias-target-class : basic-target 
{
    rule __init__ ( name : project : sources * : requirements * 
        : default-build * : usage-requirements * )
    {
        basic-target.__init__ $(name) : $(project) : $(sources) : $(requirements) 
          : $(default-build) : $(usage-requirements) ;
    }
        
    rule construct ( name : source-targets * : property-set )
    {
        return [ property-set.empty ] $(source-targets) ;
    }   
                
    rule compute-usage-requirements ( subvariant ) 
    {
        local base = [ basic-target.compute-usage-requirements $(subvariant) ] ;
        # Add source's usage requirement. If we don't do this, "alias" does not
        # look like 100% alias.
        return [ $(base).add [ $(subvariant).sources-usage-requirements ] ] ;
    }
    
}

# Declares the 'alias' target. It will build sources, and return them unaltered.
rule alias ( name : sources * : requirements * : default-build * : usage-requirements * )
{
    local project = [ project.current ] ;
    
    targets.main-target-alternative
      [ new alias-target-class $(name) : $(project) 
        : [ targets.main-target-sources $(sources) : $(name) ] 
        : [ targets.main-target-requirements $(requirements) : $(project) ] 
        : [ targets.main-target-default-build $(default-build) : $(project) ] 
        : [ targets.main-target-usage-requirements $(usage-requirements) : $(project) ]           
      ] ;
}

IMPORT $(__name__) : alias : : alias ;



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -