diff options
Diffstat (limited to 'docs/part-1/create-app-build-cmd-line.md')
-rw-r--r-- | docs/part-1/create-app-build-cmd-line.md | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/docs/part-1/create-app-build-cmd-line.md b/docs/part-1/create-app-build-cmd-line.md new file mode 100644 index 0000000..5d81625 --- /dev/null +++ b/docs/part-1/create-app-build-cmd-line.md @@ -0,0 +1,171 @@ +# Build Using the Command Line + +One option for building your application using XDS is to use +the command line (i.e. `xds-cli`). +Building the application consists of declaring your project, identifying +some key ID values, and then using the command line to build it. + +<!-- section-note --> +**NOTE:** + +XDS tools, including `xds-cli`, are installed by default in +the `/opt/AGL/bin` directory. +During installation, this directory is automatically added to your +`PATH` variable. +If, for some reason, the tool is not in your `PATH` directory, +you can manually add it using the `export PATH=${PATH}:/opt/AGL/bin` +command. +<!-- end-section-note --> + + +## Declare Project + +Use the `projects add` command to declare your project: + +```bash +xds-cli prj add --label="Project_helloworld-native-application" --type=pm --path=/home/seb/xds-workspace/helloworld-native-application --server-path=/home/devel/xds-workspace/helloworld-native-application +``` + +When you declare the project, XDS creates the `xds-project.conf` +configuration file if one does not already exist. +You should examine this configuration file before you build the +project to be sure all configurations are correct for your project. + +<!-- section-note --> +**NOTE:** + +If the Server Part (i.e. `xds-agent`) is not running on the default +port, you can use the `--url=http://localhost:<port>` option with the +`xds-cli prj add` command to specify the port. +Just substitute the actual port for `<port>` with the option. +<!-- end-section-note --> + +## Determine the ID of Your Project + +After declaring your project, you need to determine the +unique ID of your project. + +From the command line, use the `prj ls` command, which is an abbreviation +for the `projects list` command: + +```bash +xds-cli prj ls +ID Label LocalPath +f9904f70-d441-11e7-8c59-3c970e49ad9b Project_helloworld-service /home/seb/xds-workspace/helloworld-service +4021617e-ced0-11e7-acd2-3c970e49ad9b Project_helloworld-native-application /home/seb/xds-workspace/helloworld-native-application +``` + +Once you have the ID of the project, you can use the `--id` option +or the `XDS_PROJECT_ID` environment variable to refer to your project. + +<!-- section-note --> +**NOTE:** + +When using the project ID from the command line, you can use the "short" +notation by providing a non-ambiguous portion of the ID. +For example, to refer to the `Project_helloworld-native-application` project +shown in the previous example, you can use `-id 40` rather than +`--id 40 instead of --id 4021617e-ced0-11e7-acd2-3c970e49ad9b`. +<!-- end-section-note --> + +## Determine the ID of Your SDK + +You also need to determine the ID of the SDK you want to use to cross-build +your application. + +To list installed SDKs, use the following command: + +```bash +xds-cli sdks ls +List of installed SDKs: + ID NAME + 7aa19224-b769-3463-98b1-4c029d721766 aarch64 (3.99.1+snapshot) + 41a1efc4-8443-3fb0-afe5-8313e0c96efd corei7-64 (3.99.2+snapshot) + c226821b-b5c0-386d-94fe-19f807946d03 aarch64 (3.99.3) +``` + +SDK IDs are returned by architecture and version. +Be sure to identify the SDK you need. + +## Build the Application + +You can now use XDS to cross-build your project. +Following is an example that builds a project that is based on CMake: + +```bash +# First, export the target IP address, or it's DNS name +export TARGET_ADDRESS=<target_adress> + +# Go into your project directory and create a build directory +cd $MY_PROJECT_DIR +mkdir build +``` + +Before using the command line to build the project, you should be +sure the project's configuration file is correct. +Examine the `xds-project.conf` configuration file and edit it +as needed. + +Generate the build system using CMake: + +``` +# You must set RSYNC_* variables so that you deploy and populate widgets on the target +xds-cli exec --id=4021617e --sdkid=c226821b -- "export RSYNC_TARGET=root@${TARGET_ADDRESS} ; export RSYNC_PREFIX=/opt ; cd build && cmake .." +``` + +Now you can build the project: + +``` +xds-cli exec --id=4021617e --sdkid=c226821b -- "cd build && make widget" +``` + +<!-- section-note --> +**NOTE:** + +If you use `&&`, `||` or `;` statements in the executed command line, +you need to double quote the command (e.g. `"cd build && make"`). +<!-- end-section-note --> + +To avoid having to set the project ID, SDK ID, and URL for each +command line, you can define these settings as environment variables +using an environment file. +Use the `--config` option or source file before executing +the `xds-cli` command. + +To specify your configuration file with the command line, +use the `--config` option. +For example, the equivalent of the previous build command but +with a specified configuration file is as follows: + +```bash +# MY_PROJECT_DIR=/home/seb/xds-workspace/helloworld-native-application +cd $MY_PROJECT_DIR + +# Edit and potentially adapt xds-project.conf file that has been created +# automatically on project declaration using XDS Dashboard +cat xds-project.conf + # XDS project settings + export XDS_AGENT_URL=localhost:8800 + export XDS_PROJECT_ID=4021617e-ced0-11e7-acd2-3c970e49ad9b + export XDS_SDK_ID=c226821b-b5c0-386d-94fe-19f807946d03 + +# Create build directory and invoke cmake and then build project +xds-cli exec --config=./xds-project.conf -- "mkdir -p build && cd build && cmake .." +cd build && xds-cli exec --config=../xds-project.conf -- "make all" +``` + +Alternatively, you could first source the configuration file to avoid using the +`--config` option as follows: + +``` +source xds-project.conf +xds-cli exec "mkdir -p build && cd build && cmake .." +cd build && xds-cli exec "make all" +``` + +<!-- section-note --> +**NOTE:** + +All parameters after a double dash (`--`) are considered as the command +to execute. +<!-- end-section-note --> |