chapter11.a - 对比 export 和 install 命令
export
和 install
命令都有 TARGETS
和 EXPORT
两种参数形式,所以容易混淆:
export (TARGETS ...)
将给定的 targets 导出到 target export file,不会创建 named export
install(TARGETS ... [EXPORT] ...)
如果有 EXPORT,除了安装之外,还会顺便从 targets 创建 named export(有两个作用!!这个是我是检查了 cmake_install.cmake 的)
export (EXPORT ...)
将 named export 导出到文件,可以指定名字空间
install(EXPORT ...)
将 named export 安装到系统,和 export(EXPORT ...) 有相似的参数,同样可以指定名字空间
export
命令用来导出 target export file。install
命令用来安装文件到系统。在 target export file 的场景下,两者都能用于“安装”,但是前者一般是用在安装在临时路径上(参考
Exporting without installation),而后者是用来安装进系统的。
例子:unnamed export VS named export
# unnamed export
export(TARGETS calc
FILE "${EXPORT_DIR}/CalcTargets.cmake"
NAMESPACE Calc::
)
#[=[
named export,同时还有 install(TARGETS calc) 的副作用。因而代码相当于:
install(TARGETS calc)
export(TARGETS calc
FILE "${EXPORT_DIR}/CalcTargets2.cmake"
NAMESPACE Calc::
)
#]=]
install(TARGETS calc EXPORT CalcTargets)
export(EXPORT CalcTargets
FILE "${EXPORT_DIR}/CalcTargets2.cmake"
NAMESPACE Calc::
)