首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未指定CPack NSIS组件

未指定CPack NSIS组件
EN

Stack Overflow用户
提问于 2017-02-01 16:42:14
回答 1查看 670关注 0票数 1

请看以下非常琐碎的CMake文件:

代码语言:javascript
复制
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

代码语言:javascript
复制
#pragma once

int sides_of_a_dice();

lib.cpp

代码语言:javascript
复制
int sides_of_a_dice()
{
    return 6;
}

因此,如果我在Windows上使用nmake package,出于某种原因,它会将Dice.dll放在Unspecified组件中,即使该组件是明确指定的。更奇怪的是,公共头(lib.h)正确地进入了sdk组件中。

代码语言:javascript
复制
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

怎么一回事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-01 21:23:13

根据安装命令的文档,的文件类型(如运行时、库或PUBLIC_HEADER) 将启动自己的Install子句,并对其应用所有其他选项。

也就是说,选项COMPONENT sdk仅将应用于文件的PUBLIC_HEADER类型。

其他文件(RUNTIMELIBRARY)具有未指定的组件选项。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41985057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档