diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/intro2.cli | 101 |
1 files changed, 72 insertions, 29 deletions
diff --git a/doc/intro2.cli b/doc/intro2.cli index 812eb9f..25c3075 100644 --- a/doc/intro2.cli +++ b/doc/intro2.cli @@ -31,30 +31,63 @@ \ $ git clone ssh://example.org/hello.git +$ tree hello +hello/ +├── hello/ +│ ├── hello.cxx +│ └── buildfile +├── manifest +└── repositories.manifest + $ cd hello +$ bdep init --config-create ../hello-gcc cc config.cxx=g++ +initializing project /tmp/hello/ +created configuration /tmp/hello-gcc/ (default, auto-synchronized) +synchronizing: + new hello/0.1.0 -$ bdep init --create ../hello-gcc cc config.cxx=g++ $ b -<compile> -$ ./hello +c++ hello/cxx{hello}@../hello-gcc/hello/hello/ +ld ../hello-gcc/hello/hello/exe{hello} +ln ../hello-gcc/hello/hello/exe{hello} -> hello/ + +$ hello/hello World +Hello, World! $ edit repositories.manifest # add https://example.org/libhello.git $ edit manifest # add 'depends: libhello ^1.0.0' -$ edit buildfile # import libhello -$ edit hello.cxx # use libhello +$ edit hello/buildfile # import libhello +$ edit hello/hello.cxx # use libhello + $ b -<sync> -<compile> +fetching from https://example.org/libhello.git +synchronizing /tmp/hello-gcc/: + new libhello/1.0.0 (required by hello) + reconfigure hello/0.1.0 +c++ ../hello-gcc/libhello-1.0.0/libhello/cxx{hello} +ld ../hello-gcc/libhello-1.0.0/libhello/libs{hello} +c++ hello/cxx{hello}@../hello-gcc/hello/hello/ +ld ../hello-gcc/hello/hello/exe{hello} +ln ../hello-gcc/hello/hello/exe{hello} -> hello/ $ bdep fetch # refresh available versions -$ bdep status # review available versions -<show new version> +$ bdep status -i # review available versions +hello configured 0.1.0 + libhello ^1.0.0 configured 1.0.0 available [1.1.0] $ bdep sync libhello # upgrade to latest -<...> +synchronizing: + new libformat/1.0.0 (required by libhello) + new libprint/1.0.0 (required by libhello) + upgrade libhello/1.1.0 + reconfigure hello/0.1.0 -$ bdep sync libhello/1.1.0 # downgrade to X.Y.Z -<...> +$ bdep sync libhello/1.0.0 # downgrade +synchronizing: + drop libprint/1.0.0 (unused) + drop libformat/1.0.0 (unused) + downgrade libhello/1.0.0 + reconfigure hello/0.1.0 \ \h1#tour|A Tour of The \c{build2} Toolchain| @@ -90,6 +123,7 @@ customary \i{\"Hello, World!\"} program: \ $ bdep new -t exe -l c++ hello +created new executable project hello in /tmp/hello/ \ The \l{bdep-new(1)} command creates a \i{canonical} \c{build2} project. In @@ -180,6 +214,8 @@ infrastructure for importing (commented out) and linking libraries (that file tests our program. Let's take a look inside: \ +$ cat hello/testscript + : basics : $* 'World' >'Hello, World!' @@ -245,9 +281,9 @@ we are in the project's root directory): \ $ bdep init -C ../hello-gcc @gcc cc config.cxx=g++ initializing project /tmp/hello/ -created configuration @gcc /tmp/hello-gcc/ (1, default) +created configuration @gcc /tmp/hello-gcc/ (default, auto-synchronized) synchronizing: - build hello/0.1.0-a.0.19700101000000 + new hello/0.1.0-a.0.19700101000000 \ The \cb{--create|-C} option instructs \c{init} to create a new configuration @@ -266,9 +302,9 @@ Now the same for Clang: \ $ bdep init -C ../hello-clang @clang cc config.cxx=clang++ initializing project /tmp/hello/ -created configuration @clang /tmp/hello-clang/ (2) +created configuration @clang /tmp/hello-clang/ (auto-synchronized) synchronizing: - build hello/0.1.0-a.0.19700101000000 + new hello/0.1.0-a.0.19700101000000 \ If we check the parent directory, we should now see two build configurations @@ -332,12 +368,14 @@ $ bdep status hello configured 0.1.0-a.0.19700101000000 $ b -<...> +c++ hello/cxx{hello}@../hello-gcc/hello/hello/ +ld ../hello-gcc/hello/hello/exe{hello} +ln ../hello-gcc/hello/hello/exe{hello} -> hello/ $ b test -<...> +test hello/test{testscript} ../hello-gcc/hello/hello/exe{hello} -$ hello/hello +$ hello/hello World Hello, World! \ @@ -348,12 +386,13 @@ $ bdep status @clang hello configured 0.1.0-a.0.19700101000000 $ b ../hello-clang/hello/ -... +c++ hello/cxx{hello}@../hello-clang/hello/hello/ +ld ../hello-clang/hello/hello/exe{hello} $ b test: ../hello-clang/hello/ -... +test hello/test{testscript} ../hello-clang/hello/hello/exe{hello} -$ ../hello-clang/hello/hello/hello +$ ../hello-clang/hello/hello/hello World Hello, World! \ @@ -364,14 +403,15 @@ and other build system options.| While we are here, let's also check how hard it would be to cross-compile: \ -$ bdep init -C ../hello-mingw cc config.cxx=x86_64-w64-mingw32-g++ +$ bdep init -C ../hello-mingw @mingw cc config.cxx=x86_64-w64-mingw32-g++ initializing project /tmp/hello/ -created configuration /tmp/hello-mingw/ (1, default) +created configuration @mingw /tmp/hello-mingw/ (auto-synchronized) synchronizing: - build hello/0.1.0-a.0.19700101000000 + new hello/0.1.0-a.0.19700101000000 -$ b -<...> +$ b ../hello-mingw/hello/ +c++ hello/cxx{hello}@../hello-mingw/hello/hello/ +ld ../hello-mingw/hello/hello/exe{hello} \ As you can see, cross-compiling in \c{build2} is nothing special. In our case, @@ -379,8 +419,11 @@ on a properly setup GNU/Linux machine (that automatically uses \c{wine} as an \c{.exe} interpreter) we can even run tests: \ -$ b test -<...> +$ b test: ../hello-mingw/hello/ +test hello/test{testscript} ../hello-mingw/hello/hello/exe{hello} + +$ ../hello-mingw/hello/hello/hello.exe Windows +Hello, Windows! \ Let's review what it takes to initialize a project's infrastructure and |