过程

过程

我尝试下载 https://cmake.org/files/v3.11/cmake-3.11.0.tar.gz 并构建它,但构建后 ./bin 子文件夹中没有 cmake-gui。另一个源档案中是否提供了 cmake-gui?

答案1

这里有两个选择:

  • cmake-gui已打包作为cmake-qt-gui. 使用以下命令安装:

    sudo apt-get install cmake-qt-gui
    
  • 如果您确实需要从源代码构建它,请执行以下操作:

    sudo apt-get update
    sudo apt-get build-dep cmake-qt-gui
    wget https://cmake.org/files/v3.11/cmake-3.11.0.tar.gz
    
    tar -xzf cmake-3.11.0.tar.gz
    cd cmake-3.11.0/
    ./configure --qt-gui
    make -j5
    bin/cmake-gui
    

答案2

在 ubuntu 18.04 LTS 上使用 cmake 3.20.1 进行了测试

编译之前检查 Qt5 的安装(sudo apt install qt5-default)

如果你已经拥有较低版本的 cmake

cd cmake-3.20.1
mkdir build
cd build
cmake -D BUILD_QtDialog=ON ..
make -j2
sudo apt remove cmake # remove current cmake
sudo make install

否则如果你的系统中没有 cmake

cd cmake-3.20.1
./bootstrap --qt-gui
make -j2
sudo make install

答案3

没有其他任何东西依赖于 cmake(可能),所以它是一个叶节点。卸载 deb。从获取最新源代码https://cmake.org/并将 tarball 解压到某处,然后使用 cd 进入其中。

./bootstrap --qt-gui
make
make install

假设您已安装 QT dev 组件。您最终会得到常规命令行 cmake 和 cmake-qui。通过键入 cmake 或 cmake-gui 从命令行启动它们,我不知道如何添加到菜单中。

答案4

过程

  • 在这个特定的过程中,我决定配置最新版本的 cmake,使用 apt 版本的 cmake(如果这造成混淆,请原谅)。

  • cmake-gui 使用与 cmake 命令行工具相同的存储库进行编译,但是 cmake 的默认构建配置未设置为构建 cmake-gui(无论是 curses 接口还是 Qt 接口)。

  • 要使用 cmake-gui 构建 cmake,需要在 cmake 构建脚本中设置一些变量。您通常可以通过 UI 执行此操作,但也可以通过手动编辑构建目录中的 CMakeCache.txt 来设置这些变量,我将在本回答中展示如何操作。

  • CMake 需要 Qt,但它无法自动找到它,我们需要做的事情之一是显示 Qt CMake 脚本的位置。

1. 安装 Qt(如果尚未安装)

  • 从以下位置下载安装程序Qt 的网站就我而言,我选择了最新版本 5.12(撰写本文时为 5.12.7)并使用所有默认设置进行安装。

  • 您需要在 Qt 创建一个帐户才能使用此方法下载安装程序;该帐户对于开源用户是免费的(如果您使用该帐户仅供自己使用来构建 cmake,则可以免费;如果您计划将 Qt 用于其他任何用途,则应验证是否可以使用此版本)。

  • 我将 Qt 安装到我的主目录中名为 Qt 的文件夹中。

  • 此安装过程将需要一段时间。

  • 我认为 Qt 可能可以通过 apt 获得,但就我的目的而言,我需要为另一个项目进行完整下载,因此无论如何我都在这里下载它。

2. git clone cmake 源代码git 存储库到某处(例如,你的主目录)。

git clone https://gitlab.kitware.com/cmake/cmake.git

3. 创建构建目录

cd cmake
mkdir build
cd build
cmake ..

除其他事项外,这将在您的构建文件夹中放置一个名为 CMakeCache.txt 的文件。

4. 编辑 CMakeCache.txt 来配置 ui

  • 在文本编辑器中打开此文件,并编辑以下行以启用 qt ui(我通过搜索 qt 找到了这些)。

  • 请注意,您需要将其替换为您的 qt 目录所在的位置,在我的情况下只是/home/jrh/Qt5.12.11

  • 例如,对于我来说(运行 Qt 5.12.11),Qt5Core_DIR 目录是/home/jrh/Qt5.12.11/5.12.11/gcc_64/lib/cmake/Qt5Core

  • 我建议不要使用相对路径或~。

//Build Qt dialog for CMake
BUILD_QtDialog:BOOL=ON

QT_QMAKE_EXECUTABLE:FILEPATH=<path to Qt>/<qt version>/gcc_64/bin/qmake

//The directory containing a CMake configuration file for Qt5Core.
Qt5Core_DIR:PATH=<path to Qt>/<qt version>/gcc_64/lib/cmake/Qt5Core

//The directory containing a CMake configuration file for Qt5Widgets.
Qt5Widgets_DIR:PATH=<path to Qt>/<qt version>/gcc_64/lib/cmake/Qt5Widgets

//The directory containing a CMake configuration file for Qt5.
//FYI: This folder should contain a file named Qt5Config.cmake
Qt5_DIR:PATH=<path to Qt>/<qt version>/gcc_64/lib/cmake/Qt5

5. 在构建目录中重新运行 cmake..

cmake ..

6.编译cmake(在build目录下)

其中 N 是您要编译的核心数,在本例中我输入了make -j10

make -jN

7.安装构建的cmake

  • 在执行此操作之前,您可能想删除 cmake 的 apt 版本,但似乎(由于某种原因),cmake 的安装部分需要安装 cmake 才能...安装 cmake。
sudo make install

8. 最后的操作

  • sudo make install不幸的是,它不能替换存储在 /usr/bin 中的 cmake 版本。

  • 可能有更简洁的方法来完成这一步。

  • 用来cmake --version验证您是否需要执行此操作,如果它给出了 apt 附带的版本(对于我来说,在撰写本文时是 3.10.2),则您需要执行此操作。

  • 您还应该验证您的 cmake 版本是否在 /usr/local/bin/

我需要做以下事情:

重命名 apt 安装的 cmake 二进制文件

sudo mv /usr/bin/cmake /usr/bin/cmake_old

将我们构建的 cmake 版本链接到 /usr/bin/

sudo ln -s /usr/local/bin/cmake /usr/bin/cmake
  • 我没有想到需要将新版本的 cmake 链接到 /usr/bin/,因为 /usr/local/bin 应该在 PATH 中;由于某种原因,它会固执地只在 /usr/bin 中寻找 cmake,并给我一个错误,说没有找到 /usr/bin/cmake,即使 /usr/local/bin 中提供了最新版本的 cmake。

  • 我猜重置 bash 或者重新启动可能会解决链接的需求,但我不确定。

键入cmake-gui以启动 UI

cmake-gui 的屏幕截图

凉爽的!

笔记

  • 在 Ubuntu Mate 18.04.1 x86_64 上测试
  • 我正在尝试安装的 Cmake 版本:这次提交,这没有什么特别的意义,我只是克隆了最新的版本。我还将其用于 CMake 3.23.2,这是截至本文编辑时(2022 年 5 月 26 日)的最新稳定版本。
  • 我最初为 Qt 5.12.7 编写了本指南,我不确定这是否只是巧合,但当我尝试使用 Qt 5.12.11 时,唯一需要更改的就是在该版本中我还必须设置 Qt5_DIR。
  • CMake 除了“使用 cmake 构建 cmake”选项之外还提供了 ./configure 脚本,但是由于 configure 脚本几乎只是运行 cmake,所以我认为走这条路没有多大意义。
  • 如果您通过运行 ./configure 路径开始此过程,请注意,它似乎将构建目录设置为源代码目录的根目录。好消息是,如果您从 ./configure 开始,则无需重新开始构建,CMakeCache.txt 应该存在于源代码目录的根目录中,您可以对其进行编辑,然后按照本文中记录的说明继续操作。
  • 我认为,如果您在整个过程中使用 apt 版本的 cmake 来配置最新版本的 cmake,此方法应该有效。如果此方法无效,请在评论中告诉我。
  • 就我而言(像 OP 一样),我希望在安装从源代码构建最新版本的 cmake 后返回并构建 cmake-gui。
  • 因此,在(在我看来不太可能的)情况下,构建 cmake-gui 的脚本部分需要最新版本的 cmake 来构建 cmake,但其余构建部分使用 apt 版本就可以,为了准确复制我在这里执行的步骤,您可以使用 apt 版本构建 cmake,然后使用最新构建的 cmake 版本重新配置,并再次构建。

相关内容