c++ - 建设图书馆
问题描述
有人可以在不依赖包管理器的情况下解释构建库的过程吗?我是一名新开发人员,每次都觉得这项任务非常困难。我目前正在尝试构建https://github.com/ClickHouse/ClickHouse库,以便我可以为它做出贡献并获得真实世界的经验。
我设法遵循了https://clickhouse.tech/docs/en/development/developer-instruction/但我现在很困惑在哪里可以找到 .Sln 文件开始编码。
顺便说一句:我在虚拟机上使用 Ubuntu 20.04.2.0。
我的问题:有人能给我一个关于如何构建库的详细或简单的概述吗?以 clickhouse 库为例也会有所帮助。构建目录
我添加了我的构建目录的图片,如果这也有助于显示我哪里出错了。
解决方案
ClickHouse 是用 C++ 编写的(不是 c#,所以没有sln -file)。
C++ 没有像其他世界那样的标准包管理器 - .net (nuget)、nodejs (npm) 等,而是使用git submodules。
您参考的文章应该明确解释如何编译所需的软件 - 只需按照它(https://clickhouse.tech/docs/en/development/developer-instruction/#creating-a-repository-on-github)。
我可以重复这篇文章:
# 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 所有这些步骤在官方文档中都有详细描述 - 我会按照这些文档进行操作,如果您发现一些错误,请毫不犹豫地修复它
ps2考虑到第一次编译需要几个小时
推荐阅读
- javascript - Jquery在更改时获取属性值
- amazon-web-services - Terraform AWS - 当前不支持请求的配置(状态代码:400)
- java - 聚合结果无法正确映射到 Java 对象
- php - 在 mysql 数据库中编码信息的最佳方法是什么?不仅仅是密码
- angular - .NET Core、Angular、Signalr 和 AWS 的 Cors 问题
- c++ - 计算统一子串权重的代码
- django - Django REST Framework:如何为现有用户和新用户创建/处理 auth_token?
- java - 主从数据库的spring boot数据库连接
- powershell - Invoke-RestMethod:发送到标头时找不到请求的身份验证数据
- android - 最近 chrome 更新后 Webview 显示空白页