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

📄 os.jam

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 JAM
字号:
# Copyright 2001, 2002, 2003, 2005 Dave Abrahams# Copyright 2006 Rene Rivera# Copyright 2003, 2005 Vladimir Prus# Distributed under the Boost Software License, Version 1.0.# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)import modules ;import string ;# 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 : os ? ){    os ?= $(.name) ;    # First look for a platform-specific name, then the general value.    local variables = .$(c)-$(os) .$(c) ;    local result = $($(variables)) ;    return $(result[1]) ;}rule get-constant ( os ? ){    # 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) : $(os) ] ;}# export all the common constants.constants = name platform version shared-library-path-variable path-separator executable-path-variable executable-suffix ;for local constant in $(.constants){    IMPORT $(__name__) : get-constant : $(__name__) : $(constant) ;}EXPORT $(__name__) : $(.constants) ;.executable-path-variable-NT = PATH ;# On Windows the case and capitalization of PATH is not always predictable, so# let's find out what variable name was really set.if $(.name) = NT{    for local n in [ VARNAMES .ENVIRON ]    {        if $(n:L) = path        {            .executable-path-variable-NT = $(n) ;        }    }}# Specific constants for various platforms.  There's no need to define any# constant whose value would be the same as the default, below..shared-library-path-variable-NT = $(.executable-path-variable-NT) ;.path-separator-NT = ";" ;.expand-variable-prefix-NT = % ;.expand-variable-suffix-NT = % ;.executable-suffix-NT = .exe ;.shared-library-path-variable-CYGWIN = PATH ;.shared-library-path-variable-MACOSX = DYLD_LIBRARY_PATH ;.shared-library-path-variable-AIX = LIBPATH ;# Default constants.shared-library-path-variable = LD_LIBRARY_PATH ;.path-separator = ":" ;.expand-variable-prefix = $ ;.expand-variable-suffix = "" ;.executable-path-variable = PATH ;.executable-suffix = "" ;# Return a list of the directories in the PATH. Yes, that information is (sort# of) available in the global module, but jam code can change those values, and# it isn't always clear what case/capitalization to use when looking. This rule# is a more reliable way to get there.rule executable-path ( ){    return [ string.words [ environ [ constant executable-path-variable ] ]        : [ constant path-separator ] ] ;}# Initialize the list of home directories for the current user depending on the# OS.if $(.name) = NT{    local home = [ environ HOMEDRIVE HOMEPATH ] ;    .home-directories = $(home[1])$(home[2]) [ environ HOME ] [ environ USERPROFILE ] ;}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) ;}rule __test__{    import assert ;    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 + -