【发布时间】: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}到您为每个目标配置指定的目标(ARCHIVE、LIBRARY和RUNTIME)。 -
用英语说:假设您的项目有一个前缀:
C:/MyProject- 在您的项目中,您的源文件和相应的 CMakeLists.txt 文件位于C:/MyProject/src下。当您像上面那样指定install()命令时,它基本上会将运行应用程序所需的所有内容移动到可执行文件期望它们所在的相应文件夹中。例如,您的 .exe 和 .dll 将进入您的C:/MyProjects/bin文件夹。 .libs 安装在C:/MyProjects/lib文件夹等中。您在关键字DESTINATION之后指定该目标。 -
它的目的是将运行应用程序的所有文件分离到一个目录结构中,该目录结构包含运行所需的所有内容。例如,如果你打算给某人一份你的应用程序的副本,你不希望他们拥有你的构建文件夹的副本——因为它有 ton 的文件,最后——用户不需要运行应用程序(并且在某些情况下可能允许您的程序被其他人调试——这是您不希望的)。
标签: c++ cmake installation ros catkin