install 命令用于指定文件的输出路径,这个文件可以是二进制执行文件、动态库文件、静态库文件,甚至是目录。通俗的来讲,install 其实就是把生成的文件统一拷贝到某个目录下,方便打包或者转移。
install 在不同场合,使用的格式也会有所不同,大体可分为安装目标文件、安装目录。需要注意的是,运行 make 命令时不会执行install命令,运行 make install 才会执行 install 命令。
参考文章链接:install 命令学习
目录
1、install 安装目标文件
(1) 格式
install(TARGETS <target_name>
[RUNTIME | LIBRARY | ARCHIVE] DESTINATION <target_dir>
...
)
- <target_name>:代表目标文件的名称
- <target_dir>:代表目标文件的输出目录
选项 | 含义 |
RUNTIME | 二进制可执行文件 |
LIBRARY | 动态库 |
ARCHIVE | 静态库 |
注意:<target_dir> 最好是全路径,如果仅指定了目录名称,默认会输出到 /usr/local/<target_dir>目录下。如果目录名是add,那就会默认输出到 /usr/local/add 目录下
(2) 实际应用
安装一个目标文件(以安装二进制执行文件为例):
# 将二进制可执行文件 myrun 安装到目录 ${PROJECT_SOURCE_DIR}/build/bin
install(TARGETS myrun
RUNTIME DESTINATION ${PROJECT_SOURCE_DIR}/build/bin
)
安装多个目标文件,因为我们在运行的时候,除了生成二进制执行文件,可能还会生成动静态库
# 将二进制可执行文件 myrun 安装到目录 ${PROJECT_SOURCE_DIR}/build/bin
# 将动态库文件 mylib 安装到目录 ${PROJECT_SOURCE_DIR}/build/lib
# 将静态库文件 mystaticlib 安装到目录 ${PROJECT_SOURCE_DIR}/build/lib
install(TARGETS myrun mylib
RUNTIME DESTINATION ${PROJECT_SOURCE_DIR}/build/bin
LIBRARY DESTINATION ${PROJECT_SOURCE_DIR}/build/lib
ARCHIVE DESTINATION ${PROJECT_SOURCE_DIR}/build/lib
)
2、install 安装目录
(1) 格式
install(DIRECTORY <target_name>
DESTINATION <target_dir>
...
)
- <target_name>:代表目标文件的名称
- <target_dir>:代表输出目录
(2) 实际应用
类似于安装目标文件,这里以安装一个目录为例
# 将 bin 目录安装到 ${PROJECT_SOURCE_DIR}/build 目录下
install(DIRECTORY bin DESTINATION ${PROJECT_SOURCE_DIR}/build)