diff --git a/contributor-guide/modules/ROOT/nav.adoc b/contributor-guide/modules/ROOT/nav.adoc index f4db6b7..0d340ad 100644 --- a/contributor-guide/modules/ROOT/nav.adoc +++ b/contributor-guide/modules/ROOT/nav.adoc @@ -1,2 +1,14 @@ -* New content -xref:intro.adoc[Introduction to becoming a Boost Contributor] +* New Content +* xref:intro.adoc[Introduction to becoming a Boost Contributor] +* Legacy Content +** xref:documentation-structure.adoc[Writing Documentation for Boost - Documentation Structure] +** xref:index-file-template.adoc[Index File Template] +** Templates +*** xref:templates/acknowledgements-template.adoc[Acknowledgments Template] +*** xref:templates/bibliography-template.adoc[Bibliography Template] +*** xref:templates/configuration-template.adoc[Configuration Template] +*** xref:templates/definitions-template.adoc[Definitions Template] +*** xref:templates/faq-template.adoc[FAQ Template] +*** xref:templates/header-template.adoc[Header Template] +*** xref:templates/overview-template.adoc[Overview Template] +*** xref:templates/rationale-template.adoc[Rationale Template] \ No newline at end of file diff --git a/contributor-guide/modules/ROOT/pages/documentation-structure.adoc b/contributor-guide/modules/ROOT/pages/documentation-structure.adoc new file mode 100644 index 0000000..1663952 --- /dev/null +++ b/contributor-guide/modules/ROOT/pages/documentation-structure.adoc @@ -0,0 +1,300 @@ += Writing Documentation for Boost - Documentation Structure + +== [#introduction]#Introduction# + +Boost does not require any specific documentation structure. However, +there are some important considerations that influence content and +structure. For example, many Boost libraries wind up being proposed for +inclusion in the C++ Standard, so writing them initially with text +suitable for inclusion in the Standard may be helpful. Also, Boost +library documentation is often accessed via the World Wide Web, +including via search engines, so context is often important for every +page. Finally, Boost libraries should provide additional documentation, +such as introductory, tutorial, example, and rationale content. With +those things in mind, we suggest the following guidelines for Boost +library documentation. + +== [#standards-conforming]#Standards Conforming# Documentation + +The documentation structure required for the C++ Standard is an +effective way to describe the technical specifications for a library. +Although terse, that format is familiar to many Boost users and is far +more precise than most ad hoc formats. The following description is +based upon §17.3 of the Standard. (Note that while final Standard +proposals must include full standardese wording, which the committee +will not do for you, that level of detail is not expected of Boost +library documentation.) + +=== [#elements]#Document elements# + +[#footnote1-location] +Each document contains the following elements, as +applicable. link:#footnote1[(1)]: + +* link:#summary[Summary] +* link:#requirements[Requirements] +* link:#detailed-specs[Detailed specifications] +* link:#ref-cpp[References to the Standard C++ library] +* link:#ref-c[References to the Standard C library] + +==== [#summary]#Summary# + +The Summary provides a synopsis of the category, and introduces the +first-level subclauses. Each subclause also provides a summary, listing +the headers specified in the subclause and the library entities provided +in each header. + +Paragraphs labeled "Note(s):" or "Example(s):" are informative, other +paragraphs are normative. + +The summary and the detailed specifications are presented in the order: + +* Macros +* Values +* Types +* Classes +* Functions +* Objects + +==== [#requirements]#Requirements# + +The library can be extended by a C++ program. Each clause, as +applicable, describes the requirements that such extensions must meet. +Such extensions are generally one of the following: + +* Template arguments +* Derived classes +* Containers, iterators, and/or algorithms that meet an interface +convention + +Interface convention requirements are stated as generally as possible. +Instead of stating "`class X` has to define a member function +`operator++()`," the interface requires "for any object `x` of +`class X`, `++x` is defined." That is, whether the operator is a member +is unspecified. + +Requirements are stated in terms of well-defined expressions, which +define valid terms of the types that satisfy the requirements. For every +set of requirements there is a table that specifies an initial set of +the valid expressions and their semantics. Any generic algorithm that +uses the requirements is described in terms of the valid expressions for +its formal type parameters. + +Template argument requirements are sometimes referenced by name. + +[#footnote2-location] +In some cases the semantic requirements are presented as C++ code. Such +code is intended as a specification of equivalence of a construct to +another construct, not necessarily as the way the construct must be +implemented.link:#footnote2[(2)] + +==== [#detailed-specs]#Detailed specification# + +The detailed specifications each contain the following elements: + +* Name and brief description +* Synopsis (class definition or function prototype, as appropriate) +* Restrictions on template arguments, if any +* Description of class invariants +* Description of function semantics + +[#footnote3-location] +Descriptions of class member functions follow the order (as +appropriate) link:#footnote3[(3)]: + +* Constructor(s) and destructor +* Copying and assignment functions +* Comparison functions +* Modifier functions +* Observer functions +* Operators and other non-member functions + +[#footnote4-location] +Descriptions of function semantics contain the following +elements (as appropriate) link:#footnote4[(4):] + +*link:#requires[Requires:]* the preconditions for calling the function + +*link:#effects[Effects:]* the actions performed by the function + +*link:#postconditions[Postconditions:]* the observable results +established by the function + +*link:#returns[Returns:]* a description of the value(s) returned by the +function + +*link:#throws[Throws:]* any exceptions thrown by the function, and the +conditions that would cause the exception + +*link:#complexity[Complexity:]* the time and/or space complexity of the +function + +*link:#rationale[Rationale:]* the rationale for the function's design or +existence + +Complexity requirements specified in the library clauses are upper +bounds, and implementations that provide better complexity guarantees +satisfy the requirements. + +==== [#ref-cpp]#References to the C++ Standard library# + +==== [#ref-c]#References to the C Standard library# + +=== [#other]#Other conventions# + +These conventions are for describing implementation-defined types, and +member functions. + +==== [#type-descs]#Type descriptions# + +The Requirements subclauses may describe names that are used to specify +constraints on template arguments. + +== [#more]#More Information# + +=== [#function-semantic-explanations]#Function semantic element explanations# + +The function semantic element description above is taken directly from the C++ standard, and is quite terse. Here is a +more detailed explanation of each of the elements. + +Note the use of the ` ... ` font tag to distinguish actual +C++ usage from English prose. + +==== [#requires]#Requires# + +Preconditions for calling the function, typically expressed as +predicates. The most common preconditions are requirements on the value +of arguments, often in the form of C++ expressions. For example, + +.... + +void limit( int * p, int min, int max ); +.... + +*Requires:* `p != 0 && min <= max` + +Requirements already enforced by the C++ language rules (such as the +type of arguments) are not repeated in Requires paragraphs. + +==== [#effects]#Effects# + +The actions performed by the function, described either in prose or in +C++. A description in prose is often less limiting on implementors, but +is often less precise than C++ code. + +If an effect is specified in one of the other elements, particularly +_postconditions_, _returns_, or _throws_, it is not also described in +the _effects_ paragraph. Having only a single description ensures that +there is one and only one specification, and thus eliminates the risk of +divergence. + +==== [#postconditions]#Postconditions# + +The observable results of the function, such as the value of variables. +Postconditions are often expressed as predicates that are true after the +function completes, in the form of C++ expressions. For example: + +.... + +void make_zero_if_negative( int & x ); +.... + +*Postcondition:* `x >= 0` + +==== [#returns]#Returns# + +The value returned by the function, usually in the form of a C++ +expression. For example: + +.... +int sum( int x, int y ); +.... + +*Returns:* `x + y` + +Only specify the return value; the type is already dictated by C++ +language rules. + +==== [#throws]#Throws# + +Specify both the type of exception thrown, and the condition that causes +the exception to be thrown. For example, the `std::basic_string` class +specifies: + +.... + +void resize(size_type n, charT c); +.... + +*Throws:* `length_error` if `n > max_size()`. + +==== [#complexity]#Complexity# + +Specifying the time and/or space complexity of a function is often not +desirable because it over-constrains implementors and is hard to specify +correctly. Complexity is thus often best left as a quality of +implementation issue. + +A library component, however, can become effectively non-portable if +there is wide variation in performance between conforming +implementations. Containers are a prime example. In these cases it +becomes worthwhile to specify complexity. + +Complexity is often specified in generalized +https://web.mit.edu/16.070/www/lecture/big_o.pdf["Big-O" notation]. + +==== [#rationale]#Rationale# + +Specifying the rationale for a function's design or existence can often +give users a lot of insight into why a library is designed the way it +is. More importantly, it can help prevent "fixing" something that wasn't +really broken as the library matures. + +[[web]] +== Web Reference Documentation + +Boost library documentation is often accessed via the World Web. Using +search engines, a page deep in the reference content could be viewed +without any further context. Therefore, it is helpful to add extra +context, such as the following, to each page: + +* Describe the enclosing namespace or use fully scoped identifiers. +* Document required headers for each type or function. +* Link to relevant tutorial information. +* Link to related example code. +* Include the library name. +* Include navigation elements to the beginning of the documentation. + +It is also useful to consider the effectiveness of a description in +search engines. Terse or cryptic descriptions are less likely to help +the curious find a relevant function or type. + +== [#footnotes]#Footnotes# + +[#footnote1] +link:#footnote1-location[(1)] To save space, items that do not apply to +a clause are omitted. For example, if a clause does not specify any +requirements, there will be no "Requirements" subclause. + +[#footnote2] +link:#footnote2-location[(2)] Although in some cases the code is +unambiguously the optimum implementation. + +[#footnote3] +link:#footnote3-location[(3)] To save space, items that do not apply to +a class are omitted. For example, if a class does not specify any +comparison functions, there will be no "Comparison functions" subclause. + +[#footnote4] +link:#footnote4-location[(4)] To save space, items that do not apply to +a function are omitted. For example, if a function does not specify any +precondition, there will be no "Requires" paragraph. + +''''' + +Revised 04 December, 2006 + +_Copyright © 2001 mailto:williamkempf@hotmail.com[William E. Kempf]_ + +_Distributed under the Boost Software License, Version 1.0. (See +http://www.boost.org/LICENSE_1_0.txt)_. diff --git a/contributor-guide/modules/ROOT/pages/index-file-template.adoc b/contributor-guide/modules/ROOT/pages/index-file-template.adoc new file mode 100644 index 0000000..7bc116f --- /dev/null +++ b/contributor-guide/modules/ROOT/pages/index-file-template.adoc @@ -0,0 +1,31 @@ += \{\{Library}} Index File Template + +== Contents + +xref:templates/overview-template.adoc[Overview] + +=== Reference + +xref:templates/header-template.adoc[\{\{header}}] + +xref:templates/configuration-template.adoc[Configuration Information] + +xref:templates/rationale-template.adoc[Rationale] + +xref:templates/definitions-template.adoc[Definitions] + +xref:templates/faq-template.adoc[Frequently Asked Questions (FAQs)] + +xref:templates/bibliography-template.adoc[Bibliography] + +xref:templates/acknowledgements-template.adoc[Acknowledgements] + +''''' + +Revised 04 December, 2006 + +_Copyright © 2006 mailto:%7B%7Baddress%7D%7D[\{\{author}}]_ + +_Distributed under the Boost Software License, Version 1.0. (See +http://www.boost.org/LICENSE_1_0.txt)_. + diff --git a/contributor-guide/modules/ROOT/pages/templates/acknowledgements-template.adoc b/contributor-guide/modules/ROOT/pages/templates/acknowledgements-template.adoc new file mode 100644 index 0000000..f3f321d --- /dev/null +++ b/contributor-guide/modules/ROOT/pages/templates/acknowledgements-template.adoc @@ -0,0 +1,17 @@ += Acknowledgements Template + +== \{\{Library}} + +=== Acknowledgments + +''''' + +\{\{text}} + +''''' +Revised 04 December, 2006 + +_Copyright © 2006 mailto:%7B%7Baddress%7D%7D[\{\{author}}]_ + +_Distributed under the Boost Software License, Version 1.0. (See +http://www.boost.org/LICENSE_1_0.txt)_. \ No newline at end of file diff --git a/contributor-guide/modules/ROOT/pages/templates/bibliography-template.adoc b/contributor-guide/modules/ROOT/pages/templates/bibliography-template.adoc new file mode 100644 index 0000000..775cef3 --- /dev/null +++ b/contributor-guide/modules/ROOT/pages/templates/bibliography-template.adoc @@ -0,0 +1,17 @@ += Bibliography Template + +== \{\{Library}} + +=== Bibliography + +''''' + +\{\{bibliographical information}} + +''''' +Revised 04 December, 2006 + +_Copyright © 2006 mailto:%7B%7Baddress%7D%7D[\{\{author}}]_ + +_Distributed under the Boost Software License, Version 1.0. (See +http://www.boost.org/LICENSE_1_0.txt)_. \ No newline at end of file diff --git a/contributor-guide/modules/ROOT/pages/templates/configuration-template.adoc b/contributor-guide/modules/ROOT/pages/templates/configuration-template.adoc new file mode 100644 index 0000000..88bfce8 --- /dev/null +++ b/contributor-guide/modules/ROOT/pages/templates/configuration-template.adoc @@ -0,0 +1,54 @@ += Configuration Template + +== \{\{Library}} Configuration + +== Introduction + +\{\{library}} uses several configuration macros in +http://www.boost.org/libs/config/config.htm[], as well as configuration macros meant to be supplied by the application. These +macros are documented here. + +== Application Defined Macros + +These are the macros that may be defined by an application using +\{\{library}}. + +[cols=",",] +|=== +|*Macro* |*Meaning* +|\{\{macro}} |\{\{meaning}} +|\{\{macro}} |\{\{meaning}} +|=== + +== Public Library Defined Macros + +These macros are defined by \{\{library}} but are expected to be used by +application code. + +[cols=",",] +|=== +|*Macro* |*Meaning* +|\{\{macro}} |\{\{meaning}} +|\{\{macro}} |\{\{meaning}} +|=== + +== Library Defined Implementation Macros + +These macros are defined by \{\{library}} and are implementation details +of interest only to implementers. + +[cols=",",] +|=== +|*Macro* |*Meaning* +|\{\{macro}} |\{\{meaning}} +|\{\{macro}} |\{\{meaning}} +|=== + +''''' + +Revised 04 December, 2006 + +_Copyright © 2006 mailto:%7B%7Baddress%7D%7D[\{\{author}}]_ + +_Distributed under the Boost Software License, Version 1.0. (See +http://www.boost.org/LICENSE_1_0.txt)_. \ No newline at end of file diff --git a/contributor-guide/modules/ROOT/pages/templates/definitions-template.adoc b/contributor-guide/modules/ROOT/pages/templates/definitions-template.adoc new file mode 100644 index 0000000..30b2fb3 --- /dev/null +++ b/contributor-guide/modules/ROOT/pages/templates/definitions-template.adoc @@ -0,0 +1,20 @@ += Definitions Template + +== Introduction + +\{\{Introductory text}} + +== Definitions + +[#definition-term1]*\{\{term}}:* \{\{definition}} + +[#definition-term2]*\{\{term}}:* \{\{definition}} + +''''' + +Revised 04 December, 2006 + +_Copyright © 2006 mailto:%7B%7Baddress%7D%7D[\{\{author}}]_ + +_Distributed under the Boost Software License, Version 1.0. (See +http://www.boost.org/LICENSE_1_0.txt)_. diff --git a/contributor-guide/modules/ROOT/pages/templates/faq-template.adoc b/contributor-guide/modules/ROOT/pages/templates/faq-template.adoc new file mode 100644 index 0000000..204be28 --- /dev/null +++ b/contributor-guide/modules/ROOT/pages/templates/faq-template.adoc @@ -0,0 +1,22 @@ += FAQ Template + +== \{\{Library}} Frequently Asked Questions (FAQs) + +''''' + +== \{\{question1}} + +\{\{answer}} + +== \{\{question2}} + +\{\{answer}} + +''''' + +Revised 04 December, 2006 + +_Copyright © 2006 mailto:%7B%7Baddress%7D%7D[\{\{author}}]_ + +_Distributed under the Boost Software License, Version 1.0. (See +http://www.boost.org/LICENSE_1_0.txt)_. \ No newline at end of file diff --git a/contributor-guide/modules/ROOT/pages/templates/header-template.adoc b/contributor-guide/modules/ROOT/pages/templates/header-template.adoc new file mode 100644 index 0000000..4169545 --- /dev/null +++ b/contributor-guide/modules/ROOT/pages/templates/header-template.adoc @@ -0,0 +1,220 @@ += Header Template + +== \{\{library}} Header <\{\{header}}> + +== Introduction + +\{\{Introductory text}} + +== Macros + +[#macro-spec]##\{\{Macro specifications}} + +== Values + +[#value-spec]##\{\{Value specifications}} + +== Types + +[#type-spec]##\{\{Type specifications}} + +== Classes + +=== Class `{{class name}}` + +\{\{class overview text}} + +==== Class `{{class name}}` synopsis + +.... +namespace boost +{ + class {{class name}} + { + }; +}; +.... + +==== Class `{{class name}}` constructors and destructor + +.... +{{constructor}} +.... + +*Requires:* \{\{text}} + +*Effects:* \{\{text}} + +*Postconditions:* \{\{text}} + +*Returns:* \{\{text}} + +*Throws:* \{\{text}} + +*Complexity:* \{\{text}} + +*Note:* \{\{text}} + +*Danger:* \{\{text}} + +*Rationale:* \{\{text}} + +.... +{{destructor}} +.... + +*Requires:* \{\{text}} + +*Effects:* \{\{text}} + +*Postconditions:* \{\{text}} + +*Returns:* \{\{text}} + +*Throws:* \{\{text}} + +*Complexity:* \{\{text}} + +*Note:* \{\{text}} + +*Danger:* \{\{text}} + +*Rationale:* \{\{text}} + +==== Class `{{class name}}` comparison functions + +.... +{{function}} +.... + +*Requires:* \{\{text}} + +*Effects:* \{\{text}} + +*Postconditions:* \{\{text}} + +*Returns:* \{\{text}} + +*Throws:* \{\{text}} + +*Complexity:* \{\{text}} + +*Note:* \{\{text}} + +*Danger:* \{\{text}} + +*Rationale:* \{\{text}} + +==== Class `{{class name}}` modifier functions + +.... +{{function}} +.... + +*Requires:* \{\{text}} + +*Effects:* \{\{text}} + +*Postconditions:* \{\{text}} + +*Returns:* \{\{text}} + +*Throws:* \{\{text}} + +*Complexity:* \{\{text}} + +*Note:* \{\{text}} + +*Danger:* \{\{text}} + +*Rationale:* \{\{text}} + +==== Class `{{class name}}` observer functions + +.... +{{function}} +.... + +*Requires:* \{\{text}} + +*Effects:* \{\{text}} + +*Postconditions:* \{\{text}} + +*Returns:* \{\{text}} + +*Throws:* \{\{text}} + +*Complexity:* \{\{text}} + +*Note:* \{\{text}} + +*Danger:* \{\{text}} + +*Rationale:* \{\{text}} + +==== Class `{{class name}}` static functions + +.... +{{function}} +.... + +*Requires:* \{\{text}} + +*Effects:* \{\{text}} + +*Postconditions:* \{\{text}} + +*Returns:* \{\{text}} + +*Throws:* \{\{text}} + +*Complexity:* \{\{text}} + +*Note:* \{\{text}} + +*Danger:* \{\{text}} + +*Rationale:* \{\{text}} + +== Functions + +.... +{{function}} +.... + +*Requires:* \{\{text}} + +*Effects:* \{\{text}} + +*Postconditions:* \{\{text}} + +*Returns:* \{\{text}} + +*Throws:* \{\{text}} + +*Complexity:* \{\{text}} + +*Note:* \{\{text}} + +*Danger:* \{\{text}} + +*Rationale:* \{\{text}} + +== Objects + +[#object-spec] +\{\{Object specifications}} + +== Examples + +\{\{Example(s)}} + +''''' + +Revised 04 December, 2006 + +_Copyright © 2006 mailto:%7B%7Baddress%7D%7D[\{\{author}}]_ + +_Distributed under the Boost Software License, Version 1.0. (See +http://www.boost.org/LICENSE_1_0.txt)_. diff --git a/contributor-guide/modules/ROOT/pages/templates/overview-template.adoc b/contributor-guide/modules/ROOT/pages/templates/overview-template.adoc new file mode 100644 index 0000000..cf29df2 --- /dev/null +++ b/contributor-guide/modules/ROOT/pages/templates/overview-template.adoc @@ -0,0 +1,35 @@ += Overview Template + +== \{\{Library}} Overview + +== Introduction + +\{\{text}} + +== First Topic + +[#footnote1-location] +\{\{text}} + +== Second Topic + +[#footnote2-location] +\{\{text}} + +== Footnotes + +[#footnote1] +link:#footnote1-location[(1)]: \{\{text}} + +[#footnote2] +link:#footnote2-location[(2)]: \{\{text}} + +''''' + +Revised 04 December, 2006 + +_Copyright © 2006 mailto:%7B%7Baddress%7D%7D[\{\{author}}]_ + +_Distributed under the Boost Software License, Version 1.0. (See +http://www.boost.org/LICENSE_1_0.txt)_. + diff --git a/contributor-guide/modules/ROOT/pages/templates/rationale-template.adoc b/contributor-guide/modules/ROOT/pages/templates/rationale-template.adoc new file mode 100644 index 0000000..016386c --- /dev/null +++ b/contributor-guide/modules/ROOT/pages/templates/rationale-template.adoc @@ -0,0 +1,34 @@ += Rationale Template + +== \{\{Library}} Rationale + +== Introduction + +\{\{text}} + +== First Topic + +[#footnote1-location] +\{\{text}} + +== Second Topic + +[#footnote2-location] +\{\{text}} + +== Footnotes + +[#footnote1] +link:#footnote1-location[(1)]: \{\{text}} + +[#footnote2] +link:#footnote2-location[(2)]: \{\{text}} + +''''' + +Revised 04 December, 2006 + +_Copyright © 2006 mailto:%7B%7Baddress%7D%7D[\{\{author}}]_ + +_Distributed under the Boost Software License, Version 1.0. (See +http://www.boost.org/LICENSE_1_0.txt)_. diff --git a/user-guide/modules/ROOT/images/boost.png b/user-guide/modules/ROOT/images/boost.png new file mode 100644 index 0000000..b4d51fc Binary files /dev/null and b/user-guide/modules/ROOT/images/boost.png differ diff --git a/user-guide/modules/ROOT/pages/getting-started-with-linux.adoc b/user-guide/modules/ROOT/pages/getting-started-with-linux.adoc index ed08a83..1b42cd8 100644 --- a/user-guide/modules/ROOT/pages/getting-started-with-linux.adoc +++ b/user-guide/modules/ROOT/pages/getting-started-with-linux.adoc @@ -8,11 +8,20 @@ To install the Boost libraries on a Linux system, you can either use the package . Install the Boost development libraries using your package manager. For Ubuntu or Debian-based distributions, you can use the following command: `sudo apt install libboost-all-dev`. This command installs all the Boost development libraries available in the package repository. -== Method 2: Installing from source +== Method 2: Installing from Source . Open a terminal window. Install the necessary build tools and libraries. For Ubuntu or Debian-based distributions, use the following command: `sudo apt install build-essential g++ python-dev autotools-dev libicu-dev libbz2-dev libtool` -. Download the latest Boost source code from the official website (https://www.boost.org/users/download/), or use `wget` to download it directly: `wget https://boostorg.jfrog.io/artifactory/main/release/1.77.0/source/boost_1_82_0.tar.bz2`. Replace the URL and version number (1.82.0) with the latest version available. +. Download the latest Boost source code from the official website (https://www.boost.org/users/download/), or use `wget` to download it directly: + ++ +[source] +---- +`wget https://boostorg.jfrog.io/artifactory/main/release/1.77.0/source/boost_1_82_0.tar.bz2` +---- + ++ +Replace the URL and version number (1.82.0) with the latest version available. . Extract the downloaded archive: `tar xvfj boost_1_82_0.tar.bz2`. @@ -26,18 +35,12 @@ To install the Boost libraries on a Linux system, you can either use the package + For LD_LIBRARY_PATH: `export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH`. For CPLUS_INCLUDE_PATH: `export CPLUS_INCLUDE_PATH=/usr/local/include:$CPLUS_INCLUDE_PATH`. -Replace /usr/local with the prefix directory you specified during the installation, if different. +Replace `/usr/local` with the prefix directory you specified during the installation, if different. You can add these `export` commands to your `~/.bashrc` or `~/.profile` file to make the changes permanent. After completing either method, you should have the Boost libraries installed on your Linux system. - - - - - - == Next Steps * xref:use-boost-with-linux-package-manager.adoc[Use Boost with Linux and a Package Manager] \ No newline at end of file diff --git a/user-guide/modules/ROOT/pages/use-boost-with-linux-package-manager.adoc b/user-guide/modules/ROOT/pages/use-boost-with-linux-package-manager.adoc index b9eca96..bf4a8fc 100644 --- a/user-guide/modules/ROOT/pages/use-boost-with-linux-package-manager.adoc +++ b/user-guide/modules/ROOT/pages/use-boost-with-linux-package-manager.adoc @@ -1,42 +1,59 @@ -= Use Boost with Linux and a Package Manager += Use Boost with Linux and the vcpkg Package Manager -Yes, you can use vcpkg on Linux. To install vcpkg on a Linux system, follow these steps: +You can use vcpkg on Linux. To install vcpkg on a Linux system, follow these steps: -Open a terminal. +. Open a terminal. Install the necessary packages for building vcpkg by running the following command (for Ubuntu or Debian-based systems): -Install the necessary packages for building vcpkg by running the following command (for Ubuntu or Debian-based systems): - -sql -Copy code ++ +[source] +---- sudo apt-get update sudo apt-get install build-essential tar curl zip unzip git -For other Linux distributions, install the equivalent packages using the appropriate package manager, such as yum, dnf, or pacman. +---- -Clone the vcpkg repository from GitHub by running the following command: -bash -Copy code ++ +For other Linux distributions, install the equivalent packages using the appropriate package manager, such as _yum_, _dnf_, or _pacman_. + +. Clone the vcpkg repository from GitHub by running the following command: + ++ +[source] +---- git clone https://github.com/microsoft/vcpkg.git +---- + ++ This command will create a new directory named "vcpkg" in your current directory and clone the repository into it. -Change to the "vcpkg" directory using the "cd" command: -bash -Copy code -cd vcpkg -Run the bootstrap script to build the vcpkg executable: -bash -Copy code +. Change to the *vcpkg* directory: `cd vcpkg`. Then run the bootstrap script to build the vcpkg executable: + ++ +[source] +---- ./bootstrap-vcpkg.sh +---- + ++ This script will download and build the necessary components for vcpkg. It might take a few minutes to complete. -(Optional) Add the vcpkg executable to your system's PATH environment variable. This step makes it easier to run vcpkg from any directory. Run the following command: -bash -Copy code +. (Optional) Add the vcpkg executable to your system's PATH environment variable. This step makes it easier to run vcpkg from any directory. Run the following command: + ++ +[source] +---- export PATH=$PATH:$(pwd) -To make this change permanent, add the above export command to your shell's configuration file, such as ~/.bashrc or ~/.bash_profile for the Bash shell. +---- -Now, vcpkg is installed on your Linux system, and you can start using it to manage your C++ project dependencies. To install a package, you can run a command like: ++ +To make this change permanent, add the above export command to your shell's configuration file, such as `~/.bashrc` or `~/.bash_profile` for the Bash shell. -bash -Copy code +. Now, vcpkg is installed on your Linux system, and you can start using it to manage your C++ project dependencies. To install a package, you can run a command like: + ++ +[source] +---- ./vcpkg install -Replace with the name of the package you want to install. \ No newline at end of file +---- + ++ +Replace `` with the name of the package you want to install. \ No newline at end of file