如何让 cpack 生成正确的开始菜单快捷方式
how get cpack to generate correct start menu shortcuts
我想在Windows上使用cmake和cpack为某些程序创建一个安装程序。我希望能够选择要安装的程序,并且所选程序应在"开始"菜单中显示为快捷方式。这是一个简单的尝试。为每个程序做了一个组件但无法弄清楚如何生成开始菜单变量。现在,所有程序始终在菜单中,即使未选择要安装的程序也是如此。首先是要安装的简单程序。
#include <iostream>
#include <conio.h>
int main()
{
std::cout << "prog1" << std::endl;
_getch();
return 0;
}
这是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)
问题是根据在安装中选择的程序生成开始菜单快捷方式我认为这应该很容易,但似乎并非如此。可以这样做吗?
更新:我发现没有为 http://www.cmake.org/Wiki/CMake:Component_Install_With_CPack 中的任何示例生成开始菜单快捷方式,还是我做错了什么?
这是 cpack 的一个已知问题。见 http://public.kitware.com/Bug/print_bug_page.php?bug_id=9846
您需要使用 NSIS 模板创建自定义的开始菜单快捷方式。
步骤:
-
从已安装的 cmake 目录中复制 NSIS.template.in。(例如 C:\Program Files\CMake 2.8\share\cmake-2.8\Modules\NSIS.template.in) 到项目的 Cmake 源目录。
-
更新复制的 NSIS.template.in 类似于以下代码片段(取自 http://public.kitware.com/Bug/print_bug_page.php?bug_id=9846):
if (executable file is in component 'x') if (installing component 'x') CreateShortCut "$SMPROGRAMS$STARTMENU_FOLDERx.lnk" "$INSTDIRx.exe" if (uninstalling executable x) Delete "$SMPROGRAMS$MUI_TEMPx.lnk"
-
将以下行添加到 CMakeLists.txt紧接着 include(cpack) :
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}" ${CMAKE_MODULE_PATH})
- 当回溯以零开始时,如何调试崩溃
- 无法获取菜单选择以运行函数.C++
- 根据用户输入用字母填充矢量,并将"开始"和"结束"放在四肢
- 如何从头开始创建 avi 文件?
- 为什么 -mmacosx-version-min=10.10 不阻止使用标记为从 10.11 开始的函数?
- 自一周开始以来的秒数?
- 一旦双簧管录制开始,主 UI 线程就会被阻止
- GStreamer在开始任何播放之前进行搜索
- COM 外壳扩展以覆盖"Run as Administrator"在"开始"菜单搜索中失败
- 如何检测Windows开始菜单/开始屏幕何时打开
- 在Windows8中从开始菜单切换到桌面
- 在窗口开始菜单中创建快捷方式
- 如何让 cpack 生成正确的开始菜单快捷方式
- 触摸开始时更改菜单项目标签颜色
- C++:如何在Windows的「开始」菜单中创建快捷方式
- 获取 Windows 上所有用户的开始菜单的路径
- 如何检测windows8.1的开始菜单
- c++ Windows开始菜单Internet快捷方式工具提示
- 如何添加计算器开始菜单搜索
- Windows API创建快捷方式,并把应用程序在开始菜单