8000 GitHub - cs6771/comp6771: Course repository for COMP6771
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

cs6771/comp6771

Repository files navigation

Required steps

Step 1 (Operating system dependent)

Linux

  • Open a terminal
  • Install Bazel and clang-tools
  sudo apt-get install bazel clang-tools
  bazel version # Testing if bazel works
  • Ensure GDB is installed
  sudo apt-get install gdb
  gdb --version

Windows

  sudo apt-get install bazel clang-tools
  bazel version # Testing if bazel works
  • Ensure GDB is installed
  sudo apt-get install gdb
  gdb --version

Mac OSX

  • Install Bazel and clang-tools
  brew install bazel llvm
  bazel version # Testing if bazel works
  • Ensure GDB is installed
  brew install gdb
  gdb --version

Steps 2-5 (All operating systems)

  • Step 2: Clone the repository
  git clone https://github.com/cs6771/comp6771 ~/comp6771
  • Step 3: Test you can build & run your code
  bazel build //assignments/wl:main
  bazel run //assignments/wl:main # Option 1
  ./bazel-bin/assignments/wl/word_ladder_test # Option 2
  • Step 4: Test you can build & run your tests
  bazel build //assignments/wl:word_ladder_test
  ./bazel-bin/assignments/wl/word_ladder_test
  • Step 5: Using GDB
  bazel build -c dbg //assignments/wl:main
  gdb ./bazel-bin/assignments/wl/main
  • Step 6: IDE
    • Make sure you're using a capable IDE, e.g.
      • VSCode
      • CLion
    • If you struggle with the setup, use a text editor in the interim (Atom, Sublime)

Optional (Setting up an IDE)

Option 1: CLion - via the provided Linux Virtual Machine

  • Install virtualbox (exact installation instructions depend on your OS)
  • Download our virtual machine we've created for you. It has everything set up. Run it with virtualbox. The password is "comp6771".
  • In virtualbox, file > import appliance > the file you downloaded. Make sure you set the CPU and RAM to something appropriate for your machine.
  • Run chmod a+x ~/.CLion2019.*/config/plugins/clwb/gdb/gdbserver
  • Restore the settings (file > import settings)
  • Create a jetbrains account (username/password) for free to obtain a Clion license
  • Modify the line starting with "url" in ~/Documents/6771/.git/config
#url = git@github.com:cs6771/comp6771     # Old
url = https://github.com/cs6771/comp6771  # New

Option 2: CLion - Linux

We will be using clion during the lectures. Use a different IDE or editor if you prefer, but do so at your own risk.

Download and install clion from jetbrains website. Sign up using your student email to get a free copy.

After that is complete:

  • Open Clion
  • Configure plugins
    • Clion menu: Configure > plugins
    • Install bazel, clang-tidy, and clang-format.
  • Restart clion
  • Configure Clion for Bazel
    • Clion menu: Configure > settings > bazel settings > bazel binary
    • Set location to your bazel you downloaded and installed (likely /usr/bin/bazel)
  • Restore my settings
    • Clion menu: File > import settings
  • Run chmod a+x ~/.CLion2019.*/config/plugins/clwb/gdb/gdbserver
  • Import your project:
    • Clion menu: File > import bazel project > course repository

Option 3: VSCode - Windows & OSX

Setting Up Environment

Editing

  • Clone this git repo
  • cd to cloned repo directory
  • code-insiders ./

Building

  • Open command palette (Ctrl + Shift + P), type "bazel"
  • Select "Bazel: Build Package" if you want to build a package.
    • Example: building //lectures/week1 will build every single target listed in the BUILD file
  • Select "Bazel: Build Package Recursively" if you want to build a package recursively.
    • Example: building //lectures will build //lectures/week1, //lectures/week2, etc.
  • Select "Bazel: Build Target" if you want to build single targets.

Running

  • Open terminal 94B9
  • Navigate to the project root folder
  • Example:
      bazel build //lectures/week1:factorial
      ./bazel-bin/lectures/week1/factorial

Debugging

  • Go to root of the repository
  • Create a directory called ".vscode" (e.g. mkdir .vscode)
  • Inside the newly created directory create these files, "launch.json" and "tasks.json"
  • The following is an example on how to set the files up for debugging //lectures/week1:factorial_test
    • It should be easy enough to extend them for other targets
  • On "tasks.json"
    {
      // See https://go.microsoft.com/fwlink/?LinkId=733558
      // for the documentation about the tasks.json format
      "version": "2.0.0",
      "tasks": [
          {
              // to build in debug, open command pallete and select "Run Tasks"
              // and select the appropriate label (e.g. "build_factorial_test_debug"). 
              // add more to 'tasks' as required
              "label": "build_factorial_test_debug",
              "type": "shell",
              "command": "bazel",
              "args": ["build", "//lectures/week1:factorial_test", "--compilation_mode=dbg"],
              "group": {
                  "kind": "build",
                  "isDefault": true
              },
              "problemMatcher": [
                  "$gcc"
              ]
          }
      ]
    }
  • On "launch.json"
    {
      // Use IntelliSense to learn about possible attributes.
      // Hover to view descriptions of existing attributes.
      // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
      "version": "0.2.0",
      "configurations": [
          {
              // to debug, open command palette and select "Debug: Select and Start Debugging"
              // and pick the appropriate name (e.g. (gdb) factorial_test)
              // add more to 'configurations' as required.
              "name": "(gdb) factorial_test",
              "type": "cppdbg",
              "request": "launch",
              "program": "${workspaceFolder}/bazel-bin/lectures/week1/factorial_test",
              "args": [],
              "stopAtEntry": true,
              "cwd": "${workspaceFolder}",
              "environment": [],
              "externalConsole": false,
              "MIMode": "gdb",
              "setupCommands": [
                  {
                      "description": "Enable pretty-printing for gdb",
                      "text": "-enable-pretty-printing",
                      "ignoreFailures": true
                  }
              ]
          }
      ]
    }

Using Clang-Tools outside of CLion

To use tools such as clang-tidy, clang-format outside of CLion, or to use alternative IDEs relying on tools such as clangd or rtags, you will need a compilation database. To set one up, just run

./gen_compile_commands.sh

from inside the repository directory, which should result in a compile_commands.json file in the root of the project.

This should work on most POSIX systems, but it needs bash to run.

About

Course repository for COMP6771

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 8

0