2010-04-14 5 views
9

나는 CMake 2.8.1에서 NSIS 패키지 생성기를 사용하여 Qt 애플리케이션을 배포하고 있습니다. 응용 프로그램에 대한 데스크톱 링크를 만들기 위해 CPACK_CREATE_DESKTOP_LINKS을 사용하는 것을 제외하면 모든 것이 잘 작동합니다.CMake + CPack + NSIS에서 Windows 바탕 화면 아이콘 만들기

CMake source (Windows 용 자체 "부트 스트랩"설치 정의 포함)을 살펴본 결과, 똑같은 일을하고 있다는 것을 알 수 있습니다.

여기 내 CMakeLists.txt 파일의 관련 섹션이 있습니다.

모든 아이디어 또는 디버깅 정보를 제공해 주시면 감사하겠습니다.

답변

9

시도 :

set (CPACK_NSIS_MODIFY_PATH "ON") 

은 그 경로에 설치 디렉토리를 추가하고 바탕 화면의 링크를 생성 할 수있는 옵션을 추가 할 수있는 옵션을 제공 라이센스 후 페이지를 추가한다고 생각합니다. 이 스레드 건너 다른 사람을 위해

3

내가 알아 낸 해결 방법 중 하나는 CPACK_NSIS_EXTRA_INSTALL_COMMANDSCPACK_NSIS_EXTRA_UNINSTALL_COMMANDS을 사용하여 링크 생성/삭제 명령을 직접 삽입하는 것입니다.

set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS " 
    CreateShortCut \\\"$DESKTOP\\\\${EWS_APP_NAME}.lnk\\\" \\\"$INSTDIR\\\\bin\\\\${EXE_TARGET_NAME}.exe\\\" 
") 

set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS " 
    Delete \\\"$DESKTOP\\\\${EWS_APP_NAME}.lnk\\\" 
") 

내가 차라리 더 일반적인 사용하십시오 (크로스 플랫폼을?) CPACK_CREATE_DESKTOP_LINKS 설정하므로, 어떠한 후속 아이디어 감사합니다. 그러나 이것은 대타에서 작동합니다.

0

$ {EXE_TARGET_NAME}은 문자열이므로 따옴표를 붙일 필요가 없습니다. 당신의 CMakeLists.txt이 추가

+0

사실 (내 부분), 결과에 영향을주지 않습니다. – metasim

1

에서, CPACK_NSIS_CREATE_ICONS_EXTRA 임의의 바로 가기를 만들 수 있습니다 CPACK_NSIS_DELETE_ICONS_EXTRA CMake 변수있다 (등 메뉴, 바탕 화면, 시작). 사물의 삭제면에는 작은 문제가있을 수 있지만, 원하는 위치에서 바로 가기를 가져 오는 것이 상대적으로 쉽고 유연한 방법입니다. 추가 보너스는 필요한 경우 명령 줄 인수를 추가 할 수도 있다는 것입니다. This short article은 이러한 변수를 사용하여 시작 메뉴 항목을 만들고 삭제하는 방법을 설명하고 다른 유용한 NSIS 변수에 대한 문서에 대한 링크를 포함합니다. 거기에 제시된 정보를 바탕으로 바탕 화면 바로 가기에 대한 접근 방식을 사용하기는 쉽습니다. 사용자가 설정되면

prepareNSIS_Link("My application" "app" "-some -parameters") 

: 나는 [installFolder]/bin/app.exe -some -parameters과 같이 호출에 대한 링크를 만들려면 바탕 화면

macro(prepareNSIS_Link linkName appName params) 
#prepare start menu links 
LIST(APPEND CPACK_NSIS_CREATE_ICONS_EXTRA " CreateShortCut '$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\${linkName}.lnk' '$INSTDIR\\\\bin\\\\${appName}.exe' '${params}'") 
LIST(APPEND CPACK_NSIS_DELETE_ICONS_EXTRA " Delete '$SMPROGRAMS\\\\$START_MENU\\\\${linkName}.lnk'") 

#prepare desktop links 
LIST(APPEND CPACK_NSIS_CREATE_ICONS_EXTRA " CreateShortCut '$DESKTOP\\\\${linkName}.lnk' '$INSTDIR\\\\bin\\\\${appName}.exe' '${params}'") 
LIST(APPEND CPACK_NSIS_DELETE_ICONS_EXTRA " Delete '$DESKTOP\\\\${linkName}.lnk'") 
endmacro() 

에 프로그램 파일 메뉴에 대한 링크를 모두 추가하려면 다음 매크로를 사용하고

1

모든 링크를 멋지게 만들고 세미콜론을 새로운 줄로 대체하십시오.

string (REPLACE ";" "\n" CPACK_NSIS_CREATE_ICONS_EXTRA "${CPACK_NSIS_CREATE_ICONS_EXTRA}") 
    string (REPLACE ";" "\n" CPACK_NSIS_DELETE_ICONS_EXTRA "${CPACK_NSIS_DELETE_ICONS_EXTRA}") 
관련 문제