-
cmake的install:
install()可以针对多种类型,每种类型用法有区别。install()安装时可以指定安装的路径前缀:CMAKE_INSTALL_PREFIX
,只需要cmake -DCMAKE_INSTALL_PREFIX=dir
这样,就可以将目标文件install到路径前缀+相对路径的位置(相对路径由install中提供,如果install中提供的路径是以/
开头的绝对路径,则上述的CMAKE_INSTALL_PREFIX
就会无效)。
install(TARGETS ......)
目标文件安装:install(TARGETS targets ... [[ARCHIVE|LIBRARY|RUNTIME] [DESTINATION <dir>] [PERMISSIONS permissions ...] [CONFIGURATIONS [Debug|Release|...]] [COMPONENT <component>] [OPTIONAL] ][...]) # 假设a_exe是可执行文件的target,a_dll是动态库的target,a_static_dll是静态库的target install(TARGETS a_exe a_dll a_static_dll RUNTIME DESTINATION bin # 将可执行文件拷贝到${CMAKE_INSTALL_PREFIX}/bin/目录下 LIBRARY DESTINATION lib # 将动态库文件拷贝到${CMAKE_INSTALL_PREFIX}/lib/目录下 ARCHIVE DESTINATION static_lib) # 将静态库文件拷贝到${CMAKE_INSTALL_PREFIX}/static_lib/目录下
很奇怪的是在cygwin下,会将a_exe以及a_dll都拷贝到RUNTIME对应的目录下,不知道啥原因。
另外,各个target的具体路径无需关心,只需要target的名称即可。install(FILES ......)
普通文件安装:install(FILES files ... DESTINATION <dir> [PERMISSIONS permissions...] [CONFIGURATIONS [Debug|Release|...]] [COMPONENT <component>] [RENAME <name>] [OPTIONAL])
默认安装的文件权限为644。从它的语法可以看出,此命令可以重命名文件。
install(PROGRAMS ......)
非目标可执行文件(如脚本等文件)安装:INSTALL(PROGRAMS files ... DESTINATION <dir> [PERMISSIONS permissions...] [CONFIGURATIONS [Debug|Release|...]] [COMPONENT <component>] [RENAME <name>][OPTIONAL])
文件的默认安装权限为755。
install(DIRECTORY ......)
目录安装:install(DIRECTORY dirs ... DESTINATION <dir> [FILE_PERMISSIONS permissions...] [DIRECTORY_PERMISSIONS permissions...] [USE_SOURCE_PERMISSIONS] [CONFIGURATIONS [Debug|Release|...]] [COMPONENT <component>] [[PATTERN <pattern> | REGEX <regex>] [EXCLUDE] [PERMISSIONS permissions...]][...]) # 将xyz这个目录拷贝到${CMAKE_INSTALL_PREFIX}/mmm/目录里 install(DIRECTORY xyz DESTINATION mmm) # 将xyz/这个目录下的所有文件拷贝到${CMAKE_INSTALL_PREFIX}/mmm/目录里,但是xyz这个目录本身不拷贝 install(DIRECTORY xyz/ DESTINATION mmm) # 将xyz这个目录和abc目录下的所有文件安装到${CMAKE_INSTALL_PREFIX}/mmm目录下, # 过滤掉名称为qqq的目录, # 将abc目录下所有文件的权限都设定为OWNER_EXECUTE OWNER_WRITE ...... INSTALL(DIRECTORY xyz abc/ DESTINATION mmm PATTERN "qqq" EXCLUDE PATTERN "abc/*" PERMISSIONS OWNER_EXECUTE OWNER_WRITE WONER_READ GROUP+EXECUTE GROUP_READ)
cmake学习笔记 三
于 2022-08-11 17:24:54 首次发布