# Build using a source code editor / IDE First create an XDS config file or reuse the previous one, for example we use here aarch64 SDK to cross build application for a Renesas Gen3 board. ```bash # create file at root directory of your project # for example: # MY_PROJECT_DIR=/home/seb/xds-workspace/helloworld-native-application cat > $MY_PROJECT_DIR/xds-project.conf << EOF export XDS_AGENT_URL=localhost:8800 export XDS_PROJECT_ID=4021617e-ced0-11e7-acd2-3c970e49ad9b export XDS_SDK_ID=c226821b-b5c0-386d-94fe-19f807946d03 EOF ``` ## NetBeans This chapter will show you how to create 2 configurations, one to compile your project natively (using native GNU gcc) and one to cross-compile your project using XDS. You can easily switch from one to other configuration using menu **Run -> Set Project Configuration**. __Netbeans 8.x :__ - Open menu **Tools** -> **Options** - Open **C/C++** tab, in **Build Tools** sub-tab, click on **Add** button: ![Add new tool panel](./pictures/nb_newtool.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"} - Then, you should set **Make Command** and **Debugger Command** to point to xds tools: ![Add new tool panel](./pictures/nb_xds_options.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"} - Finally click on **OK** button. - Now create we first declare project into NetBeans and create first a native configuration. To do that, open menu **File** -> **New Project** - Select **C/C++ Project with Existing Sources** ; Click on **Next** button - Specify your project directory and set **Select Configuration Mode** to **Custom**. Keep **Tool Collection** to **Default GNU** in order to create a *native configuration* based on native GNU GCC. Finally click on **Next** button. ![Select Model panel](./pictures/nb_new-project-1.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"} - Just update **Run in Folder** field and add `build_native` suffix so that resulting build files will be located into `build_native` sub-directory. Keep all others settings to default value and click on **Next** button. ![Select Model panel](./pictures/nb_new-project-2.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"} - Click several times on **Next button** (always keep default settings) and click on **Finish** button to complete creation of native configuration. - Now we will create a **cross configuration** based on XDS tools. Edit project properties (using menu **File** -> **Project Properties**) to add a new configuration that will use XDS to cross-compile your application for example for a Renesas Gen3 board. - in **Build** category, click on **Manage Configurations** button and then **New** button to add a new configuration named for example "Gen3 board" ![Select Build category](./pictures/nb_new-project-3.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"} - Click on **Set Active** button - Select **Pre-Build** sub-category, and set: - Working Directory: `build_gen3` - Command Line: `xds-cli exec -c ../xds-project.conf -- cmake -DRSYNC_TARGET=root@renesas-gen3 -DRSYNC_PREFIX=/opt ..` - Pre-build First: `ticked` - Select **Make** sub-category, and set: - Working Directory: `build_gen3` - Build Command: `xds-cli exec -c ../xds-project.conf -- make remote-target-populate` - Clean Command: `xds-cli exec -c ../xds-project.conf -- make clean` ![Select Make sub-category](./pictures/nb_new-project-4.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"} - Select **Run** sub-category, and set: - Run Command: `target/start-on-root@renesas-gen3.sh` - Run Directory: `build-gen3` ![Select Run sub-category](./pictures/nb_new-project-5.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"} - Click on **OK** button to save settings By changing configuration from **Default** to **Gen3 board**, you can now simply compile your helloworld application natively (**Default** configuration) or cross-compile your application through XDS for the Renesas Gen3 board (**Gen3 board** configuration). ## Visual Studio Code Open your project in VS Code ```bash cd $MY_PROJECT_DIR code . & ``` Add new tasks : press `Ctrl+Shift+P` and select the `Tasks: Configure Task` command and you will see a list of task runner templates. And define your own tasks, here is an example to build [helloworld-native-application](https://github.com/iotbzh/helloworld-native-application) AGL helloworld application based on cmake template. ```json { "version": "2.0.0", "type": "shell", "presentation": { "reveal": "always" }, "tasks": [ { "label": "clean", "type": "shell", "command": "/bin/rm -rf ${workspaceFolder}/build/* && mkdir -p build && echo Cleanup done.", "problemMatcher": [] }, { "label": "pre-build", "type": "shell", "group": "build", "command": "/opt/AGL/bin/xds-cli exec --rpath build --config xds-project.conf -- cmake -DRSYNC_TARGET=root@renesas-gen3 -DRSYNC_PREFIX=/opt ../", "problemMatcher": [ "$gcc" ] }, { "label": "build", "type": "shell", "group": "build", "command": "/opt/AGL/bin/xds-cli exec --rpath build --config xds-project.conf -- make widget", "problemMatcher": [ "$gcc" ] }, { "label": "populate", "type": "shell", "command": "/opt/AGL/bin/xds-cli exec --rpath build --config xds-project.conf -- make widget-target-install", "problemMatcher": [] } ] } ``` To run a task : press `Ctrl+Shift+P`, select the `Tasks: Run task` and then select for example `pre-build` to trigger pre-build task. > **Note:** > > You can also add your own keybindings to trig above tasks, for example: > > ```json > // Build > { > "key": "alt+f9", > "command": "workbench.action.tasks.runTask", > "args": "clean" > }, > { > "key": "alt+f10", > "command": "workbench.action.tasks.runTask", > "args": "pre-build" > }, > { > "key": "alt+f11", > "command": "workbench.action.tasks.runTask", > "args": "build" > }, > { > "key": "alt+f12", > "command": "workbench.action.tasks.runTask", > "args": "populate" > }, > ``` > > More details about VSC keybindings [here](https://code.visualstudio.com/docs/editor/tasks#_binding-keyboard-shortcuts-to-tasks) > > More details about VSC tasks [here](https://code.visualstudio.com/docs/editor/tasks) ## Qt Creator Please refer to [agl-hello-qml](https://github.com/radiosound-com/agl-hello-qml#clone--build-project) project. Thanks to Dennis for providing this useful example. ## Others IDE *Coming soon...*