我有一个项目(带有子项目),我想为其生成多个 NSIS 安装程序可执行文件,而不是在单个 NSIS 安装程序中列出多个组件。这可能吗?还是我需要将我的代码组织到单独的项目中?
问问题
1025 次
1 回答
1
可以提供一个 CMake 属性,例如COMPONENT
,它可以设置为一组预定义的包名称中的一个值,例如:COMPONENT_1|COMPONENT_2|...COMPONENT_X
包名称甚至可以是不对应于单个组件名称的名称,而是将添加到 CPACK_COMPONENTS_ALL 中的一组组件。如果 COMPONENT 等于 ALL_COMPONENTS,则 CPACK_COMPONENTS_ALL 的值将包含所有可能的组件。
cmake 包装:
if (WIN32)
set (CPACK_COMPONENTS_ALL ${COMPONENT})
set (CPACK_PACKAGE_NAME ${COMPONENT})
set (CPACK_COMPONENT_${COMPONENT}_DISPLAY_NAME "${COMPONENT}")
set (CPACK_COMPONENT_${COMPONENT}_DESCRIPTION "${COMPONENT}")
set (CPACK_NSIS_DISPLAY_NAME "${COMPONENT}")
set (CPACK_NSIS_PACKAGE_NAME "${COMPONENT}")
set (CPACK_NSIS_INSTALL_ROOT "C:")
set (CPACK_GENERATOR NSIS)
else()
...
endif()
要为每个 COMPONENT 创建安装程序,您将运行例如:
cmake -COMPONENT=COMPONENT_1 ../
nmake package
cmake -COMPONENT=COMPONENT_2 ../
nmake package
...
cmake -COMPONENT=COMPONENT_X ../
nmake package
请记住,由于二进制文件是在第一次执行时构建的nmake package
,因此后续调用cmake
andnmake package
只会重新配置打包并仅构建请求的 COMPONENT(又名 COMPONENT)
于 2017-05-30T15:54:41.933 回答