2017-02-01 5 views
0

вот следующее довольно тривиальным CMake файл:CPack NSIS компонент Неизвестно

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; 
} 

Так что если я nmake package для этого на Windows это почему-то ставит 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, БИБЛИОТЕКА или PUBLIC_HEADER) начинает свою собственную установку пункт, к которому применяются все другие варианты.

То есть, опция COMPONENT sdk применяется только к файлу типа PUBLIC_HEADER.

Другие файлы (RUNTIME, LIBRARY) есть опция компонента не определено.

Смежные вопросы