我正在尝试在CLion中构建ClickHouse。
我遵循官方文件。我能够从命令行构建ClickHouse,但是,我也希望能够在CLion中构建它。
文档中没有给出太多关于如何做到这一点的信息,只是暗示这是可能的。ClickHouse的GitHub问题搜索"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运行构建,但我不确定如何做到这一点,搜索只提供了如何在CLion中以root身份调试的指南。
问题2。在CLion中加载CMake后,我在ClickHouse项目的根目录中的CMakeLists.txt中没有看到任何绿色箭头,这可以吗?我只能在右上角的下拉列表中看到目标(屏幕截图(。
问题3。我也不确定如何在CLion中构建所有的二进制文件。例如,在命令行中,我只运行ninja
,但在CLion中有这么多目标,而且没有一个目标的名称像build all
。
任何指向解决方案的指针都将不胜感激。
由于您使用的是远程构建,Clion首先将所有源文件复制到远程机器。如果选择
Settings -> Build,Execution,Deployment -> Deployment -> Options -> Preserve original file permissions
如果未启用,则不会保存运行某些脚本的可执行权限。这打破了结构。
因此,您可以启用此选项并重新上载文件,也可以手动为将记录在错误消息中的文件设置权限x
。