请看以下非常琐碎的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怎么一回事?
发布于 2017-02-01 21:23:13
根据安装命令的文档,的文件类型(如运行时、库或PUBLIC_HEADER) 将启动自己的Install子句,并对其应用所有其他选项。
也就是说,选项COMPONENT sdk仅将应用于文件的PUBLIC_HEADER类型。
其他文件(RUNTIME、LIBRARY)具有未指定的组件选项。
https://stackoverflow.com/questions/41985057
复制相似问题