CPack NSIS 组件未指定
Posted
技术标签:
【中文标题】CPack NSIS 组件未指定【英文标题】:CPack NSIS component is Unspecified 【发布时间】:2017-02-01 16:42:14 【问题描述】:请看以下相当简单的 CMake 文件:
cmake_minimum_required(VERSION 3.7)
add_library(libdice SHARED lib.cpp)
set_target_properties(libdice PROPERTIES
PREFIX ""
OUTPUT_NAME "Dice"
PUBLIC_HEADER "lib.h"
)
install(TARGETS libdice
RUNTIME DESTINATION "lib"
LIBRARY DESTINATION "lib"
PUBLIC_HEADER DESTINATION "include"
COMPONENT sdk
)
set(CPACK_PACKAGE_NAME "Dice SDK")
set(CPACK_GENERATOR "NSIS")
include(CPack)
cpack_add_component(sdk)
有了这个lib.h
:
#pragma once
int sides_of_a_dice();
还有lib.cpp
:
int sides_of_a_dice()
return 6;
因此,如果我在 Windows 上为此 nmake package
,它出于某种原因将 Dice.dll
放入 Unspecified
组件中,即使该组件已明确指定。更奇怪的是,公共标头 (lib.h
) 正确地进入了 sdk
组件。
CPack: Create package using NSIS
CPack: Install projects
CPack: - Run preinstall target for: Project
CPack: - Install project: Project
CPack: - Install component: Unspecified <- Why??!
CPack: - Install component: sdk
CPack: Create package
发生了什么事?
【问题讨论】:
【参考方案1】:根据install 命令的文档,每个规范文件类型(如 RUNTIME、LIBRARY 或 PUBLIC_HEADER em>) 开始自己的安装子句,所有其他选项都适用于该子句。
也就是说,选项COMPONENT sdk
仅应用于文件类型PUBLIC_HEADER
。
其他文件(RUNTIME
、LIBRARY
)有组件选项未指定。
【讨论】:
以上是关于CPack NSIS 组件未指定的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 CPACK_NSIS_WELCOME_TITLE 和 CPACK_NSIS_FINISH_TITLE?
CPack:如何执行多个 CPACK_NSIS_EXTRA_INSTALL_COMMANDS?