Visual studio 如何从VisualStudio运行cpack?
我正在将一些软件包从Linux移植到windows,我发现VisualStudio与cmake有很好的集成。 我可以使用cmake配置和构建项目,但是我不知道如何运行cpack来创建安装包 这个问题--建议由构建创建PACKAGE.vcxproj文件。确实如此,但似乎无论如何都无法从VisualStudio内部构建/运行它 这似乎是一个奇怪的疏忽:Visual studio 如何从VisualStudio运行cpack?,visual-studio,cmake,cpack,Visual Studio,Cmake,Cpack,我正在将一些软件包从Linux移植到windows,我发现VisualStudio与cmake有很好的集成。 我可以使用cmake配置和构建项目,但是我不知道如何运行cpack来创建安装包 这个问题--建议由构建创建PACKAGE.vcxproj文件。确实如此,但似乎无论如何都无法从VisualStudio内部构建/运行它 这似乎是一个奇怪的疏忽: cmake集成非常好 ctest测试可通过测试菜单运行 安装目标可以通过build菜单运行 但是没有使用cpack创建包的菜单选项 注意,我正在
- cmake集成非常好
- ctest测试可通过测试菜单运行
- 安装目标可以通过build菜单运行 但是没有使用cpack创建包的菜单选项
我使用的是VS2019,我想到的最好的解决方案是你不能——至少不能直接使用。一些更开明的人可能知道得更好,因为这确实看起来是一个奇怪的疏忽 如果从tools/developer命令提示符打开命令提示符 您可以从那里手动运行cpack 另一个要点是,不应在Windows上设置CPACK_PACKAGING_INSTALL_前缀。 看 您可以通过向CMakeLists.txt中添加自定义目标(或多个目标)来改进此功能,该文件将在中显示。 例如(基于)添加:
SET(CPACK\u OUTPUT\u CONFIG\u文件“${CMAKE\u BINARY\u DIR}/BundleConfig.CMAKE”)
添加自定义目标(捆绑)
命令“${CMAKE\u CPACK\u COMMAND}”
“-C”“$”
--配置“${CMAKE\u BINARY\u DIR}/BundleConfig.CMAKE”
注释“正在运行CPack。请稍候…”
依赖${PROJECT_NAME}doxygen)
在我的情况下,安装包中包含的Doxygen文档是一个额外的依赖项。解决方案资源管理器菜单中是否没有显示
包
项目?它通常与其他CMake预定义目标(例如,安装
,零检查
等)组合在一起。在解决方案资源管理器中根本没有预定义目标。也许我需要配置一些东西?只是根据您的线索尝试添加以下内容-没有效果:set_属性(全局属性使用文件夹打开)set_属性(全局属性预定义的目标文件夹“CMake”)您正在使用VS文件夹吗?(设置_属性(全局属性使用上的_文件夹)
)预定义目标可能位于折叠文件夹中。如果不知道如何生成解决方案文件的细节,很难说为什么这些预定义的CMake项目没有显示在解决方案资源管理器中。甚至有一个用于如何消除它们的方法,因为它们几乎总是可用的。我让cmake生成解决方案文件。接受我自己的答案,直到/除非有人提出更好的解决方案文件。这在这一点上可能没有帮助,但链接的问题使用“旧”的在windows中使用cmake的方法:运行cmake创建visual studio解决方案文件,然后在visual studio中打开该文件。根据您对cmake集成的引用,我假设您使用新的cmake集成和“open folder”,它不会为visual studio创建解决方案或项目(.vcxproj)文件(默认情况下,它使用Ninja作为生成系统,而不是msbuild)。因此,如果您以传统的方式生成解决方案,您仍然应该获得PACKAGE.vcxprojIts,因为它有助于了解甚至有一种新的和旧的方式。
SET( CPACK_OUTPUT_CONFIG_FILE "${CMAKE_BINARY_DIR}/BundleConfig.cmake" )
ADD_CUSTOM_TARGET( bundle
COMMAND "${CMAKE_CPACK_COMMAND}"
"-C" "$<CONFIGURATION>"
"--config" "${CMAKE_BINARY_DIR}/BundleConfig.cmake"
COMMENT "Running CPack. Please wait..."
DEPENDS ${PROJECT_NAME} doxygen)