【问题标题】:What install command does in cmake?cmake中的安装命令是什么?
【发布时间】:2019-04-06 20:53:32
【问题描述】:

对不起,我太天真了。我试图从这个 cmake 网站的link 中理解,但无法理解。我有一个示例 cmake 文件,其中一个可执行文件由

生成

add_executable(${PROJECT_NAME}_node src/filename.cpp)

然后通过以下命令安装它

安装(目标 ${PROJECT_NAME}_node ${PROJECT_NAME}
存档目的地 ${CATKIN_PACKAGE_LIB_DESTINATION}
图书馆目的地 ${CATKIN_PACKAGE_LIB_DESTINATION}
运行时目标 ${CATKIN_PACKAGE_BIN_DESTINATION} )

这个 cmake 来自 ROS,所以 catkin 就在那里。总体问题保持不变。有人知道,为什么我们需要安装 TARGETS/FILES?

【问题讨论】:

  • 您还会如何使用它们?
  • add_executable() 命令已创建可执行文件。我可以简单地运行它。
  • install 做了它所暗示的事情,它将安装您指定的任何目标(在这种情况下 ${PROJECT_NAME}_node${PROJECT_NAME} 到您为每个目标配置指定的目标( ARCHIVELIBRARYRUNTIME)。
  • 用英语说:假设您的项目有一个前缀:C:/MyProject - 在您的项目中,您的源文件和相应的 CMakeLists.txt 文件位于 C:/MyProject/src 下。当您像上面那样指定install() 命令时,它基本上会将运行应用程序所需的所有内容移动到可执行文件期望它们所在的相应文件夹中。例如,您的 .exe 和 .dll 将进入您的 C:/MyProjects/bin 文件夹。 .libs 安装在 C:/MyProjects/lib 文件夹等中。您在关键字 DESTINATION 之后指定该目标。
  • 它的目的是将运行应用程序的所有文件分离到一个目录结构中,该目录结构包含运行所需的所有内容。例如,如果你打算给某人一份你的应用程序的副本,你不希望他们拥有你的构建文件夹的副本——因为它有 ton 的文件,最后——用户不需要运行应用程序(并且在某些情况下可能允许您的程序被其他人调试——这是您不希望的)。

标签: c++ cmake installation ros catkin


【解决方案1】:

INSTALL 至少在两种情况下很有用:

  • 您下载一些软件包的源代码,生成您想在系统中使用的二进制文件。你可以在/usr/bin下INSTALL他们,例如

  • 您编译了一些您将从其他产品中使用的库。它将收集所需的文件(头文件、库...)以及仅这些文件,并将它们放在已知的位置,无论库编译期望它们在哪里。

您可以只复制它们,但依靠 CMake 可以在更高级别上表达该过程。

【讨论】:

    【解决方案2】:

    它只是在本地系统上安装构建的二进制文件。


    如果像bashgit 这样的工具必须从源代码安装(例如,要使用其最新版本),则构建它然后安装它以供使用。

    如果本地系统没有所需的工具,或者它的包不存在,或者打包的版本太旧,或者需要一些定制,从源构建和安装(从私有构建目录到公共系统目录)是一种正常的方式.

    【讨论】:

      【解决方案3】:

      你不需要使用catkin的INSTALL函数。

      INSTALL 函数只会将您的最终 BINARYLIBRARY 等复制到一个更安全的地方(例如位于 /opt/ros/<your-version>/share,lib,include 的主 ros 包空间),以减少构建工作区的拥挤并确保文件安全,以防万一您的工作区已损坏。

      【讨论】:

        猜你喜欢
        • 2017-02-19
        • 2012-02-29
        • 1970-01-01
        • 2013-08-08
        • 1970-01-01
        • 2020-07-05
        • 1970-01-01
        • 2021-07-10
        • 1970-01-01
        相关资源
        最近更新 更多