码迷,mamicode.com
首页 > 其他好文 > 详细

CMAKE之INSTALL

时间:2015-11-22 12:28:48      阅读:413      评论:0      收藏:0      [点我收藏+]

标签:

CMAKE_INSTALL_PREFIX 可以用来指定工程安装的目录,如果没有指定INSTALL将会默认安装在/usr/local目录下面。

cmake –DCMAKE_INSTALL_PREFIX=/usr/local ../

 

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

 

  1. 安装TARGET

install(TARGETS targets... [EXPORT <export-name>]

        [[ARCHIVE|LIBRARY|RUNTIME|FRAMEWORK|BUNDLE|

          PRIVATE_HEADER|PUBLIC_HEADER|RESOURCE]

         [DESTINATION <dir>]

         [INCLUDES DESTINATION [<dir> ...]]

         [PERMISSIONS permissions...]

         [CONFIGURATIONS [Debug|Release|...]]

         [COMPONENT <component>]

         [OPTIONAL] [NAMELINK_ONLY|NAMELINK_SKIP]

        ] [...])

ARCHIVE特指静态库,LIBRARY特指动态库,RUNTIME特指可执行目标二进制。

DESTINATION定义了安装的路径,如果路径以/开头,那么指的是绝对路径,这时候CMAKE_INSTALL_PREFIX其实就无效了。如果不以/开头,那么安装的路径就是${CMAKE_INSTALL_PREFIX}/<DESTINATION定义的路径>

例子:

install(TARGETS myExe mySharedLib myStaticLib

        RUNTIME DESTINATION bin

        LIBRARY DESTINATION lib

        ARCHIVE DESTINATION lib/static)

install(TARGETS mySharedLib DESTINATION /some/full/path)

 

  1. 安装文件

install(<FILES|PROGRAMS> files... DESTINATION <dir>

        [PERMISSIONS permissions...]

        [CONFIGURATIONS [Debug|Release|...]]

        [COMPONENT <component>]

        [RENAME <name>] [OPTIONAL])

如果没有指定files是指令所在路径下的相对路径,如果默认不定义权限PERMISSIONS,安装后的权限为644权限,拥用者可读写,组与其他可读。如果是脚本之类的文件指定为PROGRAMES,则默认权限为755,即都可执行。

 

  1. 安装目录

install(DIRECTORY dirs... DESTINATION <dir>

        [FILE_PERMISSIONS permissions...]

        [DIRECTORY_PERMISSIONS permissions...]

        [USE_SOURCE_PERMISSIONS] [OPTIONAL] [MESSAGE_NEVER]

        [CONFIGURATIONS [Debug|Release|...]]

        [COMPONENT <component>] [FILES_MATCHING]

        [[PATTERN <pattern> | REGEX <regex>]

         [EXCLUDE] [PERMISSIONS permissions...]] [...])

DIRECTORY 后面连接的是所在source目录的相对路径,但务必注意:abc和abc/有很大的区别。如果目录名不以/结尾,那么这个目录将被安装为目录路径下abc,如果目录名以/结尾,代表将这个目录中的内容安装到目标路径,但不包括这个目标本身。

PATTERN用于使用正则表达式进行过滤,PERMISSIONS用于指定PATTERN过滤后文件权限。

例1:安装src目录下所有.h文件到 include/myproject下

install(DIRECTORY src/ DESTINATION include/myproj

        FILES_MATCHING PATTERN "*.h")

例2:

install(DIRECTORY icons scripts/ DESTINATION share/myproj
        PATTERN "CVS" EXCLUDE
        PATTERN "scripts/*"
        PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
                    GROUP_EXECUTE GROUP_READ)

将icons目录 以及scripts目录下的所有文件(不包含scripts目录本身)安装到share/myproj目录下面,icons将会是默认的权限,scripts目录下的文件将会特别的权限,同时不包含CSV目录。

  1. 安装CMake脚本

install([[SCRIPT <file>] [CODE <code>]]

        [COMPONENT <component>] [...])

 

SCRIPT将会让安装过程中执行file.cmake脚本,file文件的路径是相对于当前源文件路径。CODE参数用于执行CMAKE指令,必须以双引号括起来,比如:

install(CODE "MESSAGE(\"Sample install message.\")")

CMAKE之INSTALL

标签:

原文地址:http://www.cnblogs.com/ronny/p/4985487.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!