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

📄 jamfile

📁 C++的一个好库。。。现在很流行
💻
字号:
# Boost serialization Library test Jamfile

#  (C) Copyright Robert Ramey 2002-2004.
#  Use, modification, and distribution are subject to the 
#  Boost Software License, Version 1.0. (See accompanying file 
#  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#

subproject libs/serialization/test ;

# bring in rules for testing
import testing ;

import ../build/serialization ;

{

# Make tests run by default.
DEPENDS all : test ;

# these are used to shorten testing while in development.  It permits
# testing to be applied to just a particular type of archive
if ! $(BOOST_ARCHIVE_LIST) {
    BOOST_ARCHIVE_LIST = 
        "text_archive.hpp" 
        "text_warchive.hpp" 
        "binary_archive.hpp" 
        "xml_archive.hpp" 
        "xml_warchive.hpp" 
    ;
    # enable the tests which don't depend on a particular archive
    BOOST_SERIALIZATION_TEST = true ;
}

# look in BOOST_ROOT for sources first, just in this Jamfile
local SEARCH_SOURCE = $(BOOST_ROOT) $(SEARCH_SOURCE) ;

rule run-template ( test-name : sources * : requirements * ) {
    return [
        run
            <lib>../../test/build/boost_test_exec_monitor
            $(sources)
        : # command
        : # input files
        : # requirements
            std::locale-support
            toolset::require-boost-spirit-support
            toolset::suppress-warnings
            toolset::optimizations
            $(requirements)
        : # test name
            $(test-name)
        : # default-build
            debug
    ] ;
}

# each of the following tests is run with each type of archive
rule run-invoke ( test-name : sources * : defns * )
{    
    if [ in-invocation-subdir ] { Echo $(test-name) ; }
    local tests ;
    tests += [ 
        run-template $(test-name)
        : # sources
            $(sources)
            <lib>../build/boost_serialization
        : # requirements
            # msvc stlport 4.5.3 only works with static lib
            <msvc-stlport><*><runtime-link>static
            <vc-6_5-stlport><*><runtime-link>static
            <define>$(defns)
            <define>BOOST_LIB_DIAGNOSTIC=1
    ] ;
    if [ in-invocation-subdir ] { Echo $(test-name)_dll ; }
    tests += [ 
        run-template $(test-name)_dll
        : # sources
            $(sources)
            <dll>../build/boost_serialization
        : # requiremens
            toolset::require-shared-libraries-support
            <define>$(defns)
            <define>BOOST_LIB_DIAGNOSTIC=1
            <define>BOOST_ALL_DYN_LINK=1
            <runtime-link>dynamic
    ] ;
    return $(tests) ;
}

# each of the following tests is run with each type of archive
rule run-winvoke ( test-name : sources * : defns * )
{
    if [ in-invocation-subdir ] { Echo $(test-name) ; }
    local tests ;
    tests += [ 
        run-template $(test-name)
        : # sources
            $(sources)
            <lib>../build/boost_serialization
            <lib>../build/boost_wserialization
        : # requirements
            toolset::require-wide-char-io-support
            <define>$(defns)
            <define>BOOST_LIB_DIAGNOSTIC=1
            # msvc stlport 4.5.3 only works with static lib
            <msvc-stlport><*><runtime-link>static
            <vc-6_5-stlport><*><runtime-link>static
            # both stlport and msvc6 define iswspace
            <msvc-stlport><*><linkflags>"-force:multiple"
            <vc-6_5-stlport><*><linkflags>"-force:multiple"
    ] ;
    if [ in-invocation-subdir ] { Echo $(test-name)_dll ; }
    tests += [ 
        run-template $(test-name)_dll
        : # sources
            $(sources)
            <dll>../build/boost_serialization
            <dll>../build/boost_wserialization
        : # requiremens
            toolset::require-wide-char-io-support
            toolset::require-shared-libraries-support
            <define>$(defns)
            <define>BOOST_LIB_DIAGNOSTIC=1
            <define>BOOST_ALL_DYN_LINK=1
            <runtime-link>dynamic
    ] ;
    return $(tests) ;
}

# for tests which don't use library code - usually just headers
rule test-bsl-run-no-lib  ( test-name : sources * )
{
    if [ in-invocation-subdir ] { Echo $(test-name) ; }
    local tests ;
    tests += [ 
        run-template $(test-name)
        : # sources
            $(test-name).cpp $(sources).cpp
        : # requirements
            <msvc-stlport><*><runtime-link>static
            <vc-6_5-stlport><*><runtime-link>static
    ] ;
}

rule test-bsl-run ( test-name : sources * )
{
    local tests ;
    tests +=  [ 
        run-invoke $(test-name) 
        : 
            $(test-name).cpp $(sources).cpp
    ] ;
    return $(tests) ;
}

rule test-bsl-run_archive ( test-name : archive-name : sources * ) {
    local tests ;
    switch $(archive-name) {
    case "*_warchive" :
        tests +=  [
            run-winvoke $(test-name)_$(archive-name)
            : 
                $(sources).cpp
            :
                BOOST_ARCHIVE_TEST=$(archive-name).hpp
        ] ;
    case "*" :
        tests +=  [
            run-invoke $(test-name)_$(archive-name)
            : 
                $(sources).cpp
            : 
                BOOST_ARCHIVE_TEST=$(archive-name).hpp
        ] ;
    }
    return $(tests) ;
}

rule test-bsl-run_files ( test-name : sources * ) {
    local tests ;
    for local defn in $(BOOST_ARCHIVE_LIST) {
        tests += [ 
            test-bsl-run_archive $(test-name) 
            : $(defn:LB) 
            : $(test-name) $(sources)
        ] ;
    }
    return $(tests) ;
}
    
rule test-bsl-run_polymorphic_archive ( test-name : sources * ) {
    local tests ;
    for local defn in $(BOOST_ARCHIVE_LIST) {
        tests += [ 
            test-bsl-run_archive test
            : polymorphic_$(defn:LB)  
            : test_polymorphic $(sources)
        ] ;
    }
    return $(tests) ;
}

test-suite "serialization" :
     [ test-bsl-run_files test_array ]
     [ test-bsl-run_files test_binary ]
     [ test-bsl-run_files test_contained_class ]
     [ test-bsl-run_files test_cyclic_ptrs ]
     [ test-bsl-run_files test_delete_pointer ]
     [ test-bsl-run_files test_deque ]
     [ test-bsl-run_files test_derived ]
     [ test-bsl-run_files test_derived_class ]
     [ test-bsl-run_files test_derived_class_ptr ]
     [ test-bsl-run_files test_diamond ]
     [ test-bsl-run_files test_exported ]
     [ test-bsl-run_files test_class_info_save ]
     [ test-bsl-run_files test_class_info_load ]
     [ test-bsl-run_files test_object ]
     [ test-bsl-run_files test_primitive ]
     [ test-bsl-run_files test_list ]
     [ test-bsl-run_files test_list_ptrs ]
     [ test-bsl-run_files test_map ]
     [ test-bsl-run_files test_mi ]
     [ test-bsl-run_files test_multiple_ptrs ]
     [ test-bsl-run_files test_no_rtti ]
     [ test-bsl-run_files test_non_intrusive ]
     [ test-bsl-run_files test_non_default_ctor ]
     [ test-bsl-run_files test_non_default_ctor2 ]
     [ test-bsl-run_files test_null_ptr ]
     [ test-bsl-run_files test_nvp ]
     [ test-bsl-run_files test_recursion ]
     [ test-bsl-run_files test_registered ]
     [ test-bsl-run_files test_set ]
     [ test-bsl-run_files test_simple_class ]
     [ test-bsl-run_files test_simple_class_ptr ]
     [ test-bsl-run_files test_split ]
     [ test-bsl-run_files test_tracking ]
     [ test-bsl-run_files test_unregistered ]
     [ test-bsl-run_files test_variant ]
     [ test-bsl-run_files test_vector ]
     [ test-bsl-run_files test_optional ]
     [ test-bsl-run_files test_shared_ptr ]
     [ test-bsl-run_files test_shared_ptr_132 ]
     [ test-bsl-run_polymorphic_archive test_polymorphic : test_polymorphic_A ]
;

if $(BOOST_SERIALIZATION_TEST) {
    test-suite "serialization" : 
        [ test-bsl-run-no-lib test_iterators ]
        [ test-bsl-run-no-lib test_iterators_base64 ]
        [ test-bsl-run test_private_ctor ]
        [ test-bsl-run test_reset_object_address ]
        [ test-bsl-run-no-lib test_smart_cast ]
        [ test-bsl-run-no-lib test_static_warning ]
        [ test-bsl-run-no-lib test_utf8_codecvt : ../src/utf8_codecvt_facet ]
        [ test-bsl-run test_void_cast ]
        [ test-bsl-run test_mult_archive_types ]
        [ test-bsl-run-no-lib test_codecvt_null : ../src/codecvt_null ]

        # demos
        [ test-bsl-run test_demo ]
        [ test-bsl-run test_demo_auto_ptr ]
        [ test-bsl-run test_demo_exception ]
        [ test-bsl-run test_demo_fast_archive ]
        [ test-bsl-run test_demo_pimpl : ../example/demo_pimpl_A ]
        [ test-bsl-run test_demo_polymorphic : ../example/demo_polymorphic_A ]
        [ test-bsl-run test_demo_portable_archive ]
        [ test-bsl-run test_demo_shared_ptr ]
        [ test-bsl-run test_demo_xml ]
        [ test-bsl-run test_demo_xml_load ]
        [ test-bsl-run test_demo_xml_save ]

        # should fail compilation
        [ compile-fail test_not_serializable.cpp : std::locale-support ]
        [ compile-fail test_traits_fail.cpp : std::locale-support ]
        [ compile-fail test_const_save_fail1.cpp : std::locale-support ]
        [ compile-fail test_const_save_fail2.cpp : std::locale-support ]
        [ compile-fail test_const_save_fail3.cpp : std::locale-support ]
        # note - library unable to detect there errors for now
        #[ compile-fail test_const_save_fail1_nvp.cpp ]
        #[ compile-fail test_const_save_fail2_nvp.cpp ]
        #[ compile-fail test_const_save_fail3_nvp.cpp ]
        [ compile-fail test_const_load_fail1.cpp : std::locale-support ]
        [ compile-fail test_const_load_fail2.cpp : std::locale-support ]
        [ compile-fail test_const_load_fail3.cpp : std::locale-support ]
        [ compile-fail test_const_load_fail1_nvp.cpp : std::locale-support ]
        [ compile-fail test_const_load_fail2_nvp.cpp : std::locale-support ]
        [ compile-fail test_const_load_fail3_nvp.cpp : std::locale-support ]

        # should compile
        [ compile test_inclusion.cpp ]
        [ compile test_traits_pass.cpp : std::locale-support ]
        [ compile test_const_pass.cpp : std::locale-support ]
    ;
    
}

saving-tests = [ test-bsl-run_files test_class_info_save ]
               [ test-bsl-run test_demo_xml_save ] ;
loading-tests = [ test-bsl-run_files test_class_info_load ]
                [ test-bsl-run test_demo_xml_load ] ;

## This makes each individual load test depend on the run of the
## corresponding save test. It is important to do this one at a
## time because $(saving-tests) and $(loading-tests) can contain
## the targets for multiple toolsets.
for local save-test-i in $(saving-tests)
{
    DEPENDS $(loading-tests[1]:S=.run) : $(save-test-i:S=.run) ;
    loading-tests = $(loading-tests[2-]) ;
}

}

⌨️ 快捷键说明

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