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 ./configure
,sudo 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。
但这很令人困惑,因为你提供的“.build the binaries ..”目录可以:
1)重叠源目录,在这种情况下,它会将大量新文件和文件夹合并到其中,或者
2)如果设置为像/usr/local/bin
那样填充了一堆垃圾,其中包含带有实际二进制文件的辅助/bin
,或者
3)如果设置为可能/usr/local/projectname/output
之类的其他位置,仍然不会将输出二进制文件放在可以自动使用的位置。
有没有一种标准方法可以将二进制文件放入/usr/local/bin
?,(即我的PATH会自动提取)或失败,是否有任何简单直接的方法可以执行此操作?
提示:
答案 0 :(得分:1)
构建目录已取消到可交付文件将安装的地方。
构建目录是一个工作目录,其中编译器,链接器和其他工具使用其他一些辅助文件生成可交付文件。例如,目标文件(.o
)是辅助文件:它们由编译器生成,由链接器使用并且从不安装。此外,构建目录包含Makefile
和make
使用的其他一些文件。
当安装文件时,make install
从构建目录中获取可交付文件,并将它们放入最终位置。在该项目准备好使用之后,可以删除构建目录。
放置安装的可交付文件的位置由变量
控制CMAKE_INSTALL_PREFIX
可以在第一次配置发生后在cmake gui工具中设置。通常,二进制文件安装在相对于该前缀的bin/
子目录中,因此您可以将 CMAKE_INSTALL_PREFIX 设置为/usr/local
,以便将可执行文件安装到/usr/local/bin/
。
对于构建目录,您可以在任何地方创建 。通常,它是在用户具有写访问权限的目录中创建的,因此配置和构建都不需要root权限。例如,您可以选择/home/<user>/cmake-build
。