C++ 如何让cpack生成正确的开始菜单快捷方式
我想用cmake和cpack为windows上的一些程序创建一个安装程序。 我希望能够选择要安装的程序,并选择要安装的程序 在“开始”菜单中显示为快捷方式。这里有一个简单的尝试。为每个程序完成一个组件 但是不知道如何生成开始菜单变量。现在,即使未选择要安装的程序,所有程序都始终在菜单中。首先是要安装的简单程序C++ 如何让cpack生成正确的开始菜单快捷方式,c++,cmake,nsis,cpack,C++,Cmake,Nsis,Cpack,我想用cmake和cpack为windows上的一些程序创建一个安装程序。 我希望能够选择要安装的程序,并选择要安装的程序 在“开始”菜单中显示为快捷方式。这里有一个简单的尝试。为每个程序完成一个组件 但是不知道如何生成开始菜单变量。现在,即使未选择要安装的程序,所有程序都始终在菜单中。首先是要安装的简单程序 #include <iostream> #include <conio.h> int main() { std::cout << "prog1"
#include <iostream>
#include <conio.h>
int main()
{
std::cout << "prog1" << std::endl;
_getch();
return 0;
}
问题是根据安装中选择的程序生成“开始”菜单快捷方式
我认为这应该很容易,但似乎不容易。有可能这样做吗
更新:我发现没有为中的任何示例生成开始菜单快捷方式,或者我做错了什么?这是cpack的一个已知问题。 看 您需要使用NSIS模板创建自定义的开始菜单快捷方式 步骤:
- 从已安装的cmake目录复制NSIS.template.in。(例如C:\Program Files\CMake 2.8\share\CMake-2.8\Modules\NSIS.template.in)添加到项目的CMake源目录
- 更新复制的NSIS.template.in,类似于以下代码段(取自):
- 在include(cpack)之前将以下行添加到CMakeLists.txt:
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)
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"
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}" ${CMAKE_MODULE_PATH})