C++ Setup
Starter
C++ and WSL
These documentation is completely followed by the official VsCode document.
Using VsCode to edit source code, compiling the source code on Linux using the g++ compiler and debugging on Linux using GDB. They are not installed by default on Ubuntu.
Environment
-
update sys dependencies:
sudo apt-get updateor download the latest versions of the system packages as well by:
sudo apt-get update && sudo apt-get dist-upgrade -
install GNU compiler tools and the GDB debugger:
sudo apt-get install build-essential gdb -
verify g++ and gdb:
whereis g++ whereis gdb
After setting up the environment, create a .cpp file and vscode will pop up a hint window to ask you to install C/C++ extensions. Let's omit this step and head forward to the next step.
Alternative
-
Install the desired version:
sudo apt install gcc-10 sudo apt install g++-10 -
Switch to the version:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 10 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 10 -
Test with:
gcc --version g++ --version
Build
Choose Terminal > Configure Default Build Task and in the dropdown select C/C++: g++ build active file. A tasks.json file should be created in the .vscode folder. Learn more tasks.json variables in the variables reference.
Run
Choose Tasks: Run Build Task and will see an executable file after the build is done.
Debug
Press F5 and choose C++ (GDB/LLDB), then choose g++ build and debug active file from the dropdown. This will create a launch.json file in the .vscode folder. More details please visit debug-helloworldcpp.
Configurations
In order to get more control over the C/C++ extension, we can create a c_cpp_properties.json file in .vscode folder via C/C++: Edit Configuration (UI) command.
CMake
-
dependencies:
sudo apt-get install build-essential libssl-dev -
check the latest released version and download:
wget https://github.com/Kitware/CMake/releases/download/v3.25.1/cmake-3.25.1.tar.gz -
extract:
tar -zxvf cmake-* -
install:
cd cmake-3.25.1 ./bootstrap -
make and install:
make sudo make install -
check installed version:
cmake --version
Create a CMake project
Clangd
Check version: clangd --version
Clang-format:
apt install clang-format
VsCode settings.json:
{
"editor.formatOnSave": false,
"clangd.path": "/opt/clangd_18.1.3/bin/clangd",
"clangd.arguments": [
"--compile-commands-dir=${workspaceFolder}/build",
"--completion-style=detailed",
"--header-insertion=never"
],
}
Useful packages/tools
Catch2
git clone https://github.com/catchorg/Catch2.git
cd Catch2
cmake -Bbuild -H. -DBUILD_TESTING=OFF
sudo cmake --build build/ --target install
Arrow
Check the official site for detailed info.
Ubuntu version:
sudo apt update
sudo apt install -y -V ca-certificates lsb-release wget
wget https://apache.jfrog.io/artifactory/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
sudo apt install -y -V ./apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
sudo apt update
sudo apt install -y -V libarrow-dev # For C++
sudo apt install -y -V libarrow-glib-dev # For GLib (C)
sudo apt install -y -V libarrow-dataset-dev # For Apache Arrow Dataset C++
sudo apt install -y -V libarrow-dataset-glib-dev # For Apache Arrow Dataset GLib (C)
sudo apt install -y -V libarrow-flight-dev # For Apache Arrow Flight C++
sudo apt install -y -V libarrow-flight-glib-dev # For Apache Arrow Flight GLib (C)
# Notes for Plasma related packages:
# * You need to enable "non-free" component on Debian GNU/Linux
# * You need to enable "multiverse" component on Ubuntu
# * You can use Plasma related packages only on amd64
sudo apt install -y -V libplasma-dev # For Plasma C++
sudo apt install -y -V libplasma-glib-dev # For Plasma GLib (C)
sudo apt install -y -V libgandiva-dev # For Gandiva C++
sudo apt install -y -V libgandiva-glib-dev # For Gandiva GLib (C)
sudo apt install -y -V libparquet-dev # For Apache Parquet C++
sudo apt install -y -V libparquet-glib-dev # For Apache Parquet GLib (C)