cmake 如何在CLion中编译ClickHouse?

w1jd8yoj  于 2023-02-12  发布在  ClickHouse
关注(0)|答案(1)|浏览(233)

我想在里昂建一个点击之家。
我遵循官方文档。我能够从命令行构建ClickHouse,但是,我也希望能够在CLion中构建它。
文档并没有给予很多关于如何做到这一点的信息,只是暗示这是可能的。ClickHouse的GitHub Issues search by 'CLion'也没有提供太多的建议。
ClickHouse使用CMake和Ninja。文档提到可以使用Ninja或make代替Ninja在CLion中编译。
我两次都试过了,但都出现了很多错误。例如,当CMake设置为-G Ninja时,我可以构建目标common,但在构建目标clickhouse-client时出现了以下错误:

====================[ Build | clickhouse-client | Debug ]=======================
/usr/bin/cmake --build /tmp/tmp.CAA3nJhi8z/cmake-build-debug --target clickhouse-client
[1/7338] Generating lber-version.c
FAILED: contrib/openldap-cmake/lber-version.c 
cd /tmp/tmp.CAA3nJhi8z/contrib/openldap && /usr/bin/cmake -E env bash -c "/tmp/tmp.CAA3nJhi8z/contrib/openldap/build/mkversion -v '2.5.X' liblber.la > \"/tmp/tmp.CAA3nJhi8z/cmake-build-debug/contrib/openldap-cmake/lber-version.c\""
bash: /tmp/tmp.CAA3nJhi8z/contrib/openldap/build/mkversion: Permission denied
[18/7338] Building CXX object contrib/..._/icu/icu4c/source/i18n/calendar.cpp.o
ninja: build stopped: subcommand failed.

我还使用CLion中的远程工具链在服务器上构建,而不是在笔记本电脑上。由于这是一个权限问题,我假设我必须从sudo运行构建,但我不知道如何操作,搜索只提供了How to debug as root in CLion的指南。
问题#2.在CLion中加载CMake后,我在ClickHouse项目根目录的CMakeLists.txt中看不到任何绿色箭头,这可以吗?我只能在右上角的下拉列表(screenshot)中看到目标。
问题#3:我也不确定如何在CLion中构建所有的二进制文件。例如,在命令行中,我只会运行ninja,但在CLion中有这么多的目标,而且没有一个目标的名称像build all
任何解决方案的建议都将受到欢迎。

v440hwme

v440hwme1#

有人回答你的第一个问题可能会有帮助。
因为您使用的是远程构建,所以Clion首先将所有源文件复制到远程机器上。
Settings -> Build,Execution,Deployment -> Deployment -> Options -> Preserve original file permissions
如果未启用,则不会保存运行某些脚本的可执行权限。这会中断构建。
因此,您可以启用此选项并重新上载文件,也可以手动为将记录在错误消息中的文件设置权限x

相关问题