0

Can someone explain the process of building libraries without relying on a package manager. I am a new developer and I find this task to be very difficult every time. I am currently trying to build the https://github.com/ClickHouse/ClickHouse library so I can contribute to it and gain real world experience.

I managed to follow the https://clickhouse.tech/docs/en/development/developer-instruction/ but I am now confused where to find the .Sln file to start coding.

Btw: I am using Ubuntu 20.04.2.0 on a virtual machine.

My questions: Can some give me a detailed or simple overview on how to build libraries? Using the clickhouse library as an example would also help.build directory

I added a picture of a my build directory if that also helps to show where I am going wrong.

Martijn Pieters
  • 1,048,767
  • 296
  • 4,058
  • 3,343
pennyBoy
  • 397
  • 2
  • 17

1 Answers1

2

ClickHouse is written in C++ (not c#, so there isn't sln-file).

C++ doesn't have the standard package manager as in other worlds - .net (nuget), nodejs (npm), etc Instead used git submodules.

The article you reference should explicitly explain how to compile required software - just follow it (https://clickhouse.tech/docs/en/development/developer-instruction/#creating-a-repository-on-github).

I can just repeat this article:

# configure git (call just ONCE)
git clone https://github.com/your_git/ClickHouse.git
git remote add upstream git@github.com:ClickHouse/ClickHouse.git

# get the latest version (https://stackoverflow.com/a/7244456/303298)
git fetch upstream
git checkout master
git rebase upstream/master
git push -f origin master

# get packages files
git submodule sync --recursive
git submodule update --init --recursive -f


# build
mkdir build
cd build

export CC=clang-10 CXX=clang++-10
cmake -D CMAKE_BUILD_TYPE=Debug ..
ninja -j 2 clickhouse-server clickhouse-client

# run compiled code
cd {your_repo_location}/ClickHouse/programs/server

../../build/programs/clickhouse-server
../../build/programs/clickhouse-client

# run tests
cd {your_repo_location}/ClickHouse/tests

./clickhouse-test -b ../build/programs/clickhouse --print-time --no-stateful 00189 00921

ps all these steps have detailed description in official docs - I would follow these docs and if you find some mistakes don't hesitate to fix it

ps2 take into account that the first compiling takes several hours

vladimir
  • 13,428
  • 2
  • 44
  • 70