使用cmake:目录的常规使用,尤其是输出二进制文件的默认位置

时间:2016-10-26 20:21:01

标签: cmake

1)使用cmake时,有没有一种标准方法可以将二进制文件放入/usr/local/bin

我正在努力更好地了解cmake,尤其是我认为配置,制作和安装的主要阶段。

我想更好地了解默认情况下使用哪些目录以及为什么这些目录:

  • 来源 - 代码和其他源文件,
  • 构建 - 便笺簿或工作目录
  • 二进制 - 用于新创建的二进制文件
  • 其他 - 适用于手册页

我对Linux很陌生,开始制作一个新版本的cmake,(我需要用于另一个项目),如下所示:

  • here下载cmake的源文件cmake-3.6.2.tar.gz

  • 将其内容放入/usr/local/src/cmake-3.6.2,(Debian Jessie)。

  • 然后运行sudo ./configuresudo make,最后sudo make install

默认情况下似乎是:

  • 阅读来自您明确告知的地方的来源,例如cd /usr/local/src/project; cmake .

  • 使用 /usr/local/src/cmake-3.6.2作为工作构建目录,(可能是因为它是步骤1中的当前目录),在那里创建了许多新目录和文件,并且

  • /usr/local/src/cmake-3.6.2/bin

  • 中创建新的可执行文件

所以我很困惑。我原本以为默认情况下sudo install会以这种方式将cmake安装到我的系统中,以使其在任何地方都可以看到。

??? 我不确定,但认为让系统资源可见的最佳方法是:1)找到二进制文件,或2)软件链接到它们,在某处的文件夹中标准PATH。换句话说,不要使用每一组新的二进制文件扩展PATH。

是否可以让cmake默认将二进制文件放在/usr/local/bin中?

是的我可以制作手动bin链接:

我不是在问这个问题,因为制作这些链接很难,但是因为我认为我可能会遗漏一些事情,而不必我这样做。 bin文件也只是其中一个输出。还有像手册这样的内容以及它们如何被连接起来?

  • 我的标准路径为.:/home/<myusername>/bin:/usr/local/bin:/usr/bin:/bin

  • 所以我在/usr/local/bin中创建了指向这些可执行文件的链接(使用 cd /usr/local/bin; ln -s ../src/cmake-3.6.2/bin/*)。

  • 现在我可以从任何地方运行cmake --version

我还可以看到cmake使用两个主目录

  • 我注意到cmake默认没有构建gui工具,所以我找到了指令(ref page)并构建了gui工具,(并且如上所述创建了一个链接以使用它来自在我的标准路径内)。

  • 然后我打开GUI工具并尝试重新制作cmake。

  • 它要求您提供源和“构建”目录:

enter image description here

但这很令人困惑,因为你提供的“.build the binaries ..”目录可以:

1)重叠源目录,在这种情况下,它会将大量新文件和文件夹合并到其中,或者

2)如果设置为像/usr/local/bin那样填充了一堆垃圾,其中包含带有实际二进制文件的辅助/bin,或者

3)如果设置为可能/usr/local/projectname/output之类的其他位置,仍然不会将输出二进制文件放在可以自动使用的位置。

有没有一种标准方法可以将二进制文件放入/usr/local/bin ?,(即我的PATH会自动提取)或失败,是否有任何简单直接的方法可以执行此操作?

提示:

  • This是介绍cmake的好话。

1 个答案:

答案 0 :(得分:1)

构建目录已取消到可交付文件将安装的地方。

构建目录是一个工作目录,其中编译器,链接器和其他工具使用其他一些辅助文件生成可交付文件。例如,目标文件(.o)是辅助文件:它们由编译器生成,由链接器使用并且从不安装。此外,构建目录包含Makefilemake使用的其他一些文件。

安装文件时,make install从构建目录中获取可交付文件,并将它们放入最终位置。在该项目准备好使用之后,可以删除构建目录。

放置安装的可交付文件的位置由变量

控制
  

CMAKE_INSTALL_PREFIX

可以在第一次配置发生后在cmake gui工具中设置。通常,二进制文件安装在相对于该前缀的bin/子目录中,因此您可以将 CMAKE_INSTALL_PREFIX 设置为/usr/local,以便将可执行文件安装到/usr/local/bin/

对于构建目录,您可以在任何地方创建 。通常,它是在用户具有写访问权限的目录中创建的,因此配置和构建都不需要root权限。例如,您可以选择/home/<user>/cmake-build