OMPL CMakeLists.txt (二)

install(FILES "${CMAKE_CURRENT_BINARY_DIR}/config.h"
    DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/ompl"
    COMPONENT ompl)

INSTALL指令

安装的需要有两种,一种是从代码编译后直接make install安装,一种是打包时的指定目录安装。 
这里需要引入一个非常有用的变量CMAKE_INSTALL_PREFIX。 CMAKE_INSTALL_PREFIX变量类似于configure脚本的 –prefix,常见的使用方法看 起来是这个样子: cmake -DCMAKE_INSTALL_PREFIX = /usr .

INSTALL指令用于定义安装规则,安装的内容可以包括目标二进制、动态库、静态库以及 文件、目录、脚本等。

INSTALL指令包含了各种安装类型,我们需要一个个分开解释:

目标文件的安装

INSTALL(TARGETS targets...
        [[ARCHIVE|LIBRARY|RUNTIME]
                   [DESTINATION ]
                   [PERMISSIONS permissions...]
                   [CONFIGURATIONS
        [Debug|Release|...]]
                   [COMPONENT ]
                   [OPTIONAL]
                ] [...])

参数中的 TARGETS 后面跟的就是我们通过 ADD_EXECUTABLE 或者 ADD_LIBRARY 定义的 目标文件,可能是可执行二进制、动态库、静态库。

目标类型也就相对应的有三种,ARCHIVE 特指静态库,LIBRARY特指动态库,RUNTIME 特指可执行目标二进制。

DESTINATION 定义了安装的路径,如果路径以 / 开头,那么指的是绝对路径,这时候 CMAKE_INSTALL_PREFIX 其实就无效了。如果你希望使用 CMAKE_INSTALL_PREFIX来 定义安装路径,就要写成相对路径,即不要以 / 开头,那么安装后的路径就是 ${CMAKE_INSTALL_PREFIX}/

举个简单的例子:

INSTALL(TARGETS myrun mylib mystaticlib
       RUNTIME DESTINATION bin
       LIBRARY DESTINATION lib
       ARCHIVE DESTINATION libstatic
)

上面的例子会将: 

  • 可执行二进制 myrun安装到 ${CMAKE_INSTALL_PREFIX}/bin 目录 ,动态库libmylib安装到${CMAKE_INSTALL_PREFIX}/lib目录 
  • 静态库 libmystaticlib安装到 ${CMAKE_INSTALL_PREFIX}/libstatic 目录 

特别注意的是你不需要关心TARGETS具体生成的路径,只需要写上TARGETS名称就可以 了。

普通文件的安装

INSTALL(FILES files... DESTINATION 
         [PERMISSIONS permissions...]
         [CONFIGURATIONS [Debug|Release|...]]
         [COMPONENT ]
         [RENAME ] [OPTIONAL])

可用于安装一般文件,并可以指定访问权限,文件名是此指令所在路径下的相对路径。如果默认不定义权限PERMISSIONS,安装后的权限为,OWNER_WRITE、OWNER_READ、GROUP_READ 和 WORLD_READ,即644权限。 

你可能感兴趣的:(ROS)