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

📄 os.jam

📁 C++的一个好库。。。现在很流行
💻 JAM
字号:
#  (C) Copyright David Abrahams 2001. 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.

import modules ;

# Return the value(s) of the given environment variable(s) at the time
# bjam was invoked.
rule environ ( variable-names + )
{
    return [ modules.peek .ENVIRON : $(variable-names) ] ;
}

.name = [ modules.peek : OS ] ;
.platform = [ modules.peek : OSPLAT ] ;
.version = [ modules.peek : OSVER ] ;

local rule constant ( c )
{
    # First look for platform-specific name, then general value
    local variables = .$(c)-$(.name) .$(c) ;
    local result = $($(variables)) ;
    return $(result[1]) ;
}

rule get-constant  ( )
{
    # Find the name of the constant being accessed, which is
    # equal to the name used to invoke us.
    local bt = [ BACKTRACE 1 ] ;
    local rulename = [ MATCH ([^.]*)$ : $(bt[4]) ] ;
    return [ constant $(rulename) ] ;
}


# export all the common constants
.constants = name platform version shared-library-path-variable path-separator ;
for local constant in $(.constants) 
{
    IMPORT $(__name__) : get-constant : $(__name__) : $(constant) ;
}
EXPORT $(__name__) : $(.constants) ;

.shared-library-path-variable-NT = PATH ;
.path-separator-NT = ";" ;
.expand-variable-prefix-NT = % ;
.expand-variable-suffix-NT = % ;

.shared-library-path-variable-CYGWIN = PATH ;
.path-separator-CYGWIN = ":" ;
.expand-variable-prefix-CYGWIN = $ ;
.expand-variable-suffix-CYGWIN = "" ;

.shared-library-path-variable-MACOSX = DYLD_LIBRARY_PATH ;


.shared-library-path-variable = LD_LIBRARY_PATH ;
.path-separator = ":" ;
.expand-variable-prefix = $ ;
.expand-variable-suffix = "" ;

if $(.name) = NT
{
    local home = [ environ HOMEDRIVE HOMEPATH ] ;
    .home-directories = $(home[1])$(home[2]) [ environ HOME ] ;
}
else
{
    .home-directories = [ environ HOME ] ;
}

# Can't use 'constant' mechanism because it only returns 1-element
# values.
rule home-directories ( )
{
    return $(.home-directories) ;
}
# Return the string needed to represent the expansion of the named
# shell variable.
rule expand-variable ( variable )
{
    local prefix = [ constant expand-variable-prefix ] ;
    local suffix = [ constant expand-variable-suffix ] ;
    return $(prefix)$(variable)$(suffix) ;
}

# Returns true if running on windows, whether in cygwin or not.
rule on-windows 
{
    local result ;
    if [ modules.peek : NT ] 
    {
        result = true ;
    }
    else if [ modules.peek : UNIX ] 
    {
        switch [ modules.peek : JAMUNAME ] 
        {
            case CYGWIN* :
            {
                result = true ;
            }
        }
    }
    return $(result) ;
}

if ! [ on-windows ] 
{
    .on-unix = 1 ;
}

rule on-unix
{
    return $(.on-unix) ;
}
     

import regex ;

rule __test__
{
    import assert ;
    rule identity ( args * ) { return $(args) ; }

    if ! ( --quiet in [ modules.peek : ARGV ] )
    {
        ECHO os: name= [ name ] ;
        ECHO os: version= [ version ] ;
    }
    assert.true name ;
}

⌨️ 快捷键说明

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