Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 如何从VisualStudio运行cpack?_Visual Studio_Cmake_Cpack - Fatal编程技术网

Visual studio 如何从VisualStudio运行cpack?

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创建包的菜单选项 注意,我正在

我正在将一些软件包从Linux移植到windows,我发现VisualStudio与cmake有很好的集成。 我可以使用cmake配置和构建项目,但是我不知道如何运行cpack来创建安装包

这个问题--建议由构建创建PACKAGE.vcxproj文件。确实如此,但似乎无论如何都无法从VisualStudio内部构建/运行它

这似乎是一个奇怪的疏忽:

  • cmake集成非常好
  • ctest测试可通过测试菜单运行
  • 安装目标可以通过build菜单运行 但是没有使用cpack创建包的菜单选项
注意,我正在尝试创建ZIP或TGZ包,此时不需要NSIS的额外复杂性。
我使用的是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)