2013-09-23 12 views
6

Bazı programların cmake ve cpack ile Windows için bir yükleyici oluşturmak istiyorum. Hangi programların yükleneceğini ve seçilen programların başlangıç ​​menüsünde kısayol olarak görüntülenmesini seçebiliyorum. İşte basit bir deneme. Her program için bir bileşen yaptık, ancak başlangıç ​​menüsü değişkeninin nasıl oluşturulacağını anlayamıyorum. Artık tüm programlar, kurulmak üzere seçilmemiş olsalar bile her zaman menüde. Birincisi, kurulacak basit bir programdır.cpack'in doğru başlangıç ​​menüsü kısayollarını üretmesini nasıl sağlayabilirsiniz

#include <iostream> 
#include <conio.h> 

int main() 
{ 
    std::cout << "prog1" << std::endl; 
    _getch(); 
    return 0; 
} 

ve burada

cmake_minimum_required(VERSION 2.8) 
project (CompoTest) 

add_executable(prog1 prog1.cpp) 
add_executable(prog2 prog2.cpp) 
add_executable(prog3 prog3.cpp) 

install(TARGETS prog1 
     RUNTIME DESTINATION bin 
     COMPONENT compo1) 
install(TARGETS prog2 
     RUNTIME DESTINATION bin 
     COMPONENT compo2) 
install(TARGETS prog3 
     RUNTIME DESTINATION bin 
     COMPONENT compo3) 

set (CPACK_PACKAGE_VERSION "1.0.0") 

set(CPACK_PACKAGE_EXECUTABLES 
    prog1 "prog 1" 
    prog2 "prog 2" 
    prog3 "prog 3" 
) 

set (CPACK_COMPONENTS_ALL compo1 compo2 compo3) 
include (CPack) 

sorun programım kolay olmalı düşünce kurulumda seçili olduğuna bağlı olarak başlat menüsünü kısayolları üretmektir CMakeLists.txt dosyasıdır ama değil gibi görünüyor olmak. Bunu yapmak mümkün mü?

Güncelleştirme: http://www.cmake.org/Wiki/CMake:Component_Install_With_CPack'daki herhangi bir örnek için başlat menüsü kısayollarının oluşturulmadığını veya yanlış bir şey yapıyorum?

cevap

11

Bu, cpack ile bilinen bir sorundur. bkz. http://public.kitware.com/Bug/print_bug_page.php?bug_id=9846

Özelleştirilmiş başlangıç ​​menüsü kısayolları oluşturmak için NSIS şablonunu kullanmanız gerekir.

Adımlar: yüklü cmake dizinden

  • Kopya NSIS.template.in. (örneğin C: \ Program Files \ CMake 2.8 \ share \ cmake-2.8 \ Modules \ NSIS.template.in) projenizin Cmake Kaynak Dir.

  • Güncelleme pasajı altındaki benzer NSIS.template.in kopyalanan (http://public.kitware.com/Bug/print_bug_page.php?bug_id=9846 alınan):

    if (executable file is in component 'x') 
        if (installing component 'x') 
        CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\x.lnk" "$INSTDIR\x.exe" 
    
    if (uninstalling executable x) 
        Delete "$SMPROGRAMS\$MUI_TEMP\x.lnk" 
    
  • (cpack) hemen önce CMakeLists.txt için sınırının altında Ekle şunlardır:

    set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}" ${CMAKE_MODULE_PATH}) 
    
İlgili konular