栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

CMake编译:安装编译文件

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CMake编译:安装编译文件

安装

安装具有两种方式,从代码编译后使用命令make install安装,或是打包时指定安装。

指定安装位置

将上述编译得到的目标二进制文件hello进行安装,所使用的手动编写的Makefile文件如下:

DESTDIR=
install:
	mkdir -p $(DESTDIR)/usr/bin
	install -m 755 hello $(DESTDIR)/usr/bin

通过指令make install可将其安装至目录/usr/bin目录下,若想要指定安装位置,可进行指定参数DESTDIR:

make install DESTDIR=/tmp/test

此时安装位置将保存至/tmp/test/usr/bin目录中。同时,还可以指定PREFIX参数:

cmake -DCMAKE_INSTALL_PREFIX=/usr ..

等同于将Makefile改写为:

DESTDIR=
PREFIX=/usr
install:
	mkdir -p $(DESTDIR)/$(PREFIX)/bin
	install -m 755 hello $(DESTDIR)/$(PREFIX)/bin
INSTALL指令

在CMake编译中,使用INSTALL指令进行安装目标二进制文件、动态库、静态库、各自文件、目录、脚本等。

针对不同的文件,所使用的参数不同,分别进行叙述。

目标文件的安装
INSTALL(TARGETS targets... 
		[[ARCHIVE|LIBRARY|RUNTIME] 
		 [DESTINATION ] 
		 [PERMISSIONS permissions...] 
		 [ConFIGURATIONS [Debug|Release|...]] 
		 [COMPonENT ] 
		 [OPTIONAL]
		] [...]
		)

上述命令中需要关心的参数如下:

TARGETS:指定安装类型为目标文件,填写TARGETS即可targets…:指定目标文件名称[ARCHIVE|LIBRARY|RUNTIME]:指定文件类型

ARCHIVE:静态库LIBRARY:动态库RUNTIME:可执行目标二进制文件 [DESTINATION

]:自定安装路径

若路径

为绝对路径,以"/"开头若路径为相对路径,则实际安装路径为:${CMAKE_INSTALL_PREFIX}/ [PERMISSIONS permissions…] :用户权限,最高777(参考liunx权限)

OWNER_WRITE :拥有者写入权限OWNER_READ :拥有者读取权限OWNER_EXECUTE :组成员执行权限GROUP_WRITE :组成员写入权限GROUP_READ :组成员读取权限GROUP_EXECUTE :组成员执行权限WORLD_WRITE :其他人写入权限WORLD_READ :其他人读取权限WORLD_EXECUTE :其他人执行权限

例如,如下使用方式:

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

上述例子实现如下目标:

二进制文件(RUNTIME)myrun安装至${CMAKE_INSTALL_PREFIX}/bin下动态库文件(LIBRARY)mylib安装至${CMAKE_INSTALL_PREFIX}/lib下静态库文件(ARCHIVE)mystaticlib安装至${CMAKE_INSTALL_PREFIX}/libstatic下 普通文件的安装

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

参数如目标文件参数:

FILES:指定安装类型为普通文件,填写FILES即可files…:安装文件名称DESTINATION

:安装路径[PERMISSIONS permissions…]:权限,默认644(所有者可读可写,组可读,其他人可读) 非目标文件的安装
INSTALL(PROGRAMS files... 
		DESTINATION 
		[PERMISSIONS permissions...]
		[ConFIGURATIONS [Debug|Release|...]]
		[COMPonENT ]
		[RENAME ] 
		OPTIONAL]
	   )

PROGRAMS:指定安装类型为非目标文件,填写PROGRAMS即可files…:安装文件名称DESTINATION

:安装路径[PERMISSIONS permissions…]:权限,默认755(所有者可读可写可执行,组可读可执行,其他人可读可执行) 目录的安装
INSTALL(DIRECTORY dirs... 
		DESTINATION 
		[FILE_PERMISSIONS permissions...]
		[DIRECTORY_PERMISSIONS permissions...]
		[USE_SOURCE_PERMISSIONS]
		[ConFIGURATIONS [Debug|Release|...]]
		[COMPonENT ]
		[	[PATTERN  | REGEX ]
		 	[EXCLUDE] 
		 	[PERMISSIONS permissions...]
		] 
		[...]
	   )

DIRECTORY:指定安装类型为目录,直接填写DIRECTORY即可dirs…:目录的相对路径

若目录名不以"/"结尾,则将此目录安装至对应路径下将目录名以“/”结尾,则将此目录下的内容安装至对应路径下,不包括该目录 DESTINATION

:安装路径权限参数:

[FILE_PERMISSIONS permissions…]:目录内文件权限[DIRECTORY_PERMISSIONS permissions…]:目录自身权限[USE_SOURCE_PERMISSIONS]:权限和源文件相同,优先级低于FILE_PERMISSIONS 筛选参数:

[PATTERN :采用模式匹配进行筛选内容 REGEX :采用正则匹配进行筛选内容[EXCLUDE]:安装时,排除筛选得到的文件[PERMISSIONS permissions…]:指定筛选得到的文件的权限

例如使用该命令执行如下:

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

上述指令执行如下操作:

将目录icons安装${CMAKE_INSTALL_PREFIX}/share/myproj将目录scripts/中的内容安装${CMAKE_INSTALL_PREFIX}/share/myproj在进行安装时,排除包含目录名中包含CVS 的命令在进行安装时,将scripts/*文件的权限指定为731 CMake脚本执行

使用如下指令执行CMake脚本:

INSTALL([
			[script ] 
			[CODE ]
		] [...]
	   )

script:指定用于调用CMake脚本,填写script即可:具体执行的脚本文件CODE :执行CMake指令,必须用双引号括起

例如:

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

上述指令将在终端输出日志:Sample install message.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/728911.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号