如何使用cmake生成.msi安装程序?

时间:2013-08-26 05:41:49

标签: windows visual-studio-2010 wix cmake cpack

我正在尝试使用.msi生成cmake安装程序。我可以使用.dll中的某些配置生成.libCMakeLists.txt个文件。请提供示例CMakeLists.txt以生成.msi安装程序。我需要在命令提示符中使用哪些命令?

我目前使用的命令是:

> cmake -G"Visual Studio 10" -H"Root CMakeLists.txt path" -B"path to generate the sln"
> cmake --build "path of the sln" --config Release
> cpack -C Release
output: CPack Error: CPack generator not specified 

我使用以下配置生成.dll.lib文件。

这是我的CMakeLists.txt

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT(mydll)
INCLUDE_DIRECTORIES(common/include) 
SET(my_lib_src dllmain.cpp mydll.cpp )
SET_SOURCE_FILES_PROPERTIES(${my_lib_src} PROPERTIES LANGUAGE C)
ADD_LIBRARY(mydll  SHARED ${my_lib_src})
SET_TARGET_PROPERTIES(mydll PROPERTIES 
LINKER_LANGUAGE C                                                                      RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/common/bin
RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_SOURCE_DIR}/common/bin
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/common/lib
ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_SOURCE_DIR}/common/lib)
install(TARGETS mydll 
  ARCHIVE
  DESTINATION lib
  COMPONENT libraries)
install(FILES mydll.h
  DESTINATION include
  COMPONENT headers)
set(CPACK_GENERATOR WIX)
set(CPACK_PACKAGE_NAME "mydll")
set(CPACK_PACKAGE_VENDOR "CMake.org")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MyLib - CPack Component Installation Example")
set(CPACK_PACKAGE_VERSION "1.0.0")
set(CPACK_PACKAGE_VERSION_MAJOR "1")
set(CPACK_PACKAGE_VERSION_MINOR "0")
set(CPACK_PACKAGE_VERSION_PATCH "0")
set(CPACK_PACKAGE_INSTALL_DIRECTORY "CPack Component Example")

INCLUDE(CPack)

3 个答案:

答案 0 :(得分:6)

您需要在运行cpack时设置生成器,而不是

  

3)cpack -C Release
  输出:CPack错误:未指定CPack生成器

您应该指定

cpack -G WIX -C Release

答案 1 :(得分:2)

在CMake 2.8.11中添加了WiX功能

答案 2 :(得分:0)

似乎MSI不在CPack Generators列表中,尽管有CPack补丁可以启用此功能。

请参阅: http://annealingtechnologies.blogspot.com/2010/02/wix-and-cpack-integration.html