如何从 Visual Studio 运行 cpack?

2023-11-29

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

这个问题 -如何在 Windows 上使用 CMake + CPack + NSIS 创建安装程序?- 建议包.vcxproj文件应该由构建创建。是的,但似乎没有办法从 Visual Studio 内部构建/运行它

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

  • cmake集成很好
  • ctest 测试可以通过测试菜单运行
  • 安装目标可以通过构建菜单运行 但没有菜单选项可以使用 cpack 创建包。

注意我正在尝试创建 ZIP 或 TGZ 包,并且此时不需要 NSIS 的额外复杂性。 我用的是VS2019


我想出的最好的解决方案是你不能——至少不能直接这样做。更开明的人可能会更清楚,因为这确实看起来是一个奇怪的疏忽。

如果从工具/开发人员命令提示符打开命令提示符 您可以从那里手动运行 cpack。

另一个重要的一点是,不应在 Windows 上设置 CPACK_PACKAGING_INSTALL_PREFIX。 看https://gitlab.kitware.com/cmake/cmake/issues/17534

您可以通过将自定义目标(或多个目标)添加到您的CMakeLists.txt这将在目标视图。 例如(基于https://cmake.org/pipermail/cmake/2017-January/064830.html) add:

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)

在我的例子中,安装包中包含的 Doxygen 文档是一个额外的依赖项。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 Visual Studio 运行 cpack? 的相关文章

  • Resharper 删除了 CTRL + .快速操作任务

    所以我终于尝试了 ReSharper 到目前为止它还不算太糟糕 但它似乎确实取代了很多按键绑定 我保留了原来的 VS 键绑定 每次当我被问到当存在冲突键绑定时我想做什么时 这很酷 不过 我似乎失去了 CTRL QuickActions 窗口
  • 识别 Visual Studio 中的重载运算符 (c++)

    有没有办法使用 Visual Studio 快速直观地识别 C 中的重载运算符 在我看来 C 中的一大问题是不知道您正在使用的运算符是否已重载 Visual Studio 或某些第三方工具中是否有某些功能可以自动突出显示重载运算符或对重载运
  • 我可以像Visual Studio一样设置Intellij IDE的环境吗?

    如何让它看起来像 Visual Studio 我说的是 Intellij Idea 9 和 10 cc 我想你会发现这个主题符合你的喜好 看一下 我也在 intelliJ 中使用它 我有时会在它和默认值之间切换 我发现有时阅读 JSP 有点
  • 使用 NDK 构建具有适用于 Android 的 cmake 构建文件的 C++ 项目

    我必须构建 2 个独立的 C 项目 它们具有针对不同平台的 Cmake 构建文件设置 我想使用 NDK 为 Android 构建它们 以便我可以将它们用作 Android Studio 中的预构建库 如何使用 NDK 为 Android 构
  • 如果 CMAKE_RUNTIME_OUTPUT_DIRECTORY 更改,CMake 无法找到测试

    我正在使用 CMake 构建我的项目 并且尝试为每个模块创建一堆测试套件 显然如果我修改变量CMAKE RUNTIME OUTPUT DIRECTORY那么 ctest 找不到要运行的测试并失败 我做了一个最小的例子来展示我正在谈论的内容
  • 如何根据“配置管理器”创建自己定义的常量?

    当我选择 调试 配置时 DEBUG常数处于活动状态 当我选择 释放 配置时 DEBUG常量处于非活动状态 我如何创建自己的配置 以便它们包含我自己定义的常量 基本上 我想要这样 如果我选择配置 FOOBAR 就会有一个常量FOO and B
  • 如何将代码标记为“不供将来使用”

    我经常遇到这样的情况 我想阻止其他开发人员继续使用某个方法或类 例如 假设我有两个库方法 A 和 B 其中 A 是执行某些任务的 旧 方法 B 是执行该任务的 新 方法 在许多情况下 A 和 B 有足够的不同 使得使用 A 开始使用 B 的
  • Silverlight 打印中“对话框必须由用户启动”安全异常的另一个技巧

    当我尝试在 Silverlight 中打印一些内容时 我收到臭名昭著的 对话框必须由用户启动 安全异常 正如您所看到的 该对话框尽可能由用户启动 约翰爸爸也帮不了我太多 http johnpapa net silverlight print
  • TFS - 删除本地文件后最新字段仍显示“是”

    在 TFS 源代码管理资源管理器中 即使我已删除所有本地文件 我的项目在最新字段中仍标记为 是 有没有办法重新评估该列 使其再次显示 未下载 如果您想从本地文件系统 例如使用 Windows 资源管理器 删除文件并将源代码管理资源管理器中的
  • Visual Studio 2010 支持 iPhone 开发吗? [复制]

    这个问题在这里已经有答案了 可能的重复 如何使用 Windows 开发机为 iPhone 进行开发 https stackoverflow com questions 22358 how can i develop for iphone u
  • 如何让 Debug.WriteLine 与其他进程一起工作?

    我有一个程序可以使用以下命令生成另外两个进程System Diagnostics Process 他们的输出被第一个程序捕获 players p Key StartInfo new ProcessStartInfo FileName arg
  • CMake:连续编译程序两次

    为了能够进行许多自动优化 我希望能够使用标志编译我的程序 fprofile generate首先 然后运行它生成配置文件 然后使用以下命令重新编译程序 fprofile use反而 这意味着我想连续编译我的程序两次 使用两个不同的CMAKE
  • 链接 .Net 程序集

    这都是假设 所以请耐心等待 假设我正在用 C 编写一个名为 Foo 的工具 输出是 foo exe 我发现了一些我喜欢使用的非常棒的库 称为 Bar 我可以在我的项目中将其引用为 bar dll 当我构建项目时 我的输出目录中有 foo e
  • 为什么我会收到未找到分析器的警告?

    我创建了一个玩具项目来检查最新的 NET 7 预览版 5 和正则表达式代码生成 它效果很好 所以我对现有项目应用了相同的更改 不是为了生产 而是为了个人生产力 由于某种原因 我收到这些警告 CS8032 An instance of ana
  • 是否有标准键盘快捷键可以在 Visual Studio 中构建当前项目?

    I know that Ctrl Shift B launches a solution build but I would like a shortcut that just builds the current project Is a
  • matplotlib pyplot 不在 Visual Studio 中绘图?

    我使用的是 VS 2013 Express 版本 安装了 python 工具和 canopy python 2 7 当我运行代码时 我试图绘制一个简单的函数 但它不起作用 import numpy as np import matplotl
  • 安装 EXPORT 需要子项目中的目标

    我正在尝试编写一个 cmake 脚本来安装我正在处理的项目 其中一部分是必要的install EXPORT LIB EXPORTS where LIB EXPORTS是我在各种项目中一直使用的 EXPORT 属性install TARGET
  • 为 CMake 中的子目录生成“干净”目标

    我想生成一个clean子目录的目标 我的项目结构是这样的 app A B lib A B C 有时我只想在 app A 上运行干净 并且不想清理库 是否可以告诉 CMake 生成clean每个目录的目标 或者像这样的自定义目标应用程序清理哪
  • cmake 找不到 Qt4

    由于4 8 0已经发布 我重新安装了Qt 现在我也想使用cmake 为了使 cmake 工作 我记得必须添加 mingw bin 文件夹 QtSDK Desktop Qt 4 7 3 到Qt4 7 3中的PATH 所以我猜测在中会有一个类似
  • 在 Windows 上从源代码构建 PhantomJS-2

    我正在尝试基于这些在 Windows 8 1 x64 上从源代码构建 PhantomJS 2 的开发版本指示 https github com ariya phantomjs wiki PhantomJS 2 但是我收到以下错误 mingw

随机推荐

  • 两个不同的 jenkins 构建器可以存在于同一个 hpi 中并共享相同的全局配置吗?

    我需要创建两个不同的 Jenkins Builder 类 每个都执行不同的操作 并且每个都需要自己的 jelly 但是 两者都需要相同的全局配置 global jelly 该配置指定主机和一些用户凭据 两种构建器类型的实例在执行执行期间将使
  • 向量值的不同组合

    假设我有一个由 n 个值组成的向量 我想获得其值的不同组合 例如 如果我有 vect a b c 我想要的不同组合是 a b c a b a c b c a b c 请注意 例如 a b 与 b a 相同 因此我不需要同时保留它们 计数自0
  • 如何在 Eclipse 中的可执行 .jar 文件中包含资源文件夹?

    我需要创建一个应用程序 使用各种参数 例如高度 体积或底面积 对各种类型的多边形进行排序 具有多边形参数 排序类型 排序方法的文件名参数将通过命令行传递 该文件位于项目中 src 文件夹外部的资源文件夹中 我已经实现了所有程序 当我通过 e
  • 无法动态创建和附加 div 和 span

    我正在编写一个 HTML 代码 其中有一个 div 说y这是在我的 HTML 正文中 有一个按钮 当用户单击此按钮时 我想要执行以下操作 创建另一个 div 类为smallBar 里面这个div 我想创建3个跨度 添加此 总计smallBa
  • 使用所有时区和有/无 DST 的日期进行单元测试

    如何使此单元测试在所有时区中通过 无论 DST 是否处于活动状态 import static org junit Assert import java text SimpleDateFormat import java util Date
  • 包含新的测试目录 Maven Surefire 插件

    现有结构 src test java gt 所有 java 单元测试 Maven Surefire 插件可以轻松获取此信息 现在 除了这些java单元测试用例之外 我还想包括一些groovy测试用例 并且我想将它们放在src test gr
  • Android - 从光标获取专辑艺术家

    我目前正在创建一个音乐播放器 并且正在使用光标检索设备上的音乐 mCursor getContentResolver query MediaStore Audio Media EXTERNAL CONTENT URI requestedCo
  • python-docx - 显示为普通段落的列表

    我正在尝试将数字和项目符号列表插入到现有的 Word 文档中 但是它们显示为普通段落 Open up existing document document Document existing document docx Add style
  • selenium 无法对网页元素进行屏幕截图

    我可以使用 Firefox get screenshot as file 2 png 对整个页面进行屏幕截图 但是当我使用passage screenshot 1 png 对网页元素进行屏幕截图时 它总是会引发此异常 selenium co
  • 嵌入字体和 11 月字体有什么区别?

    在书中我看到了例子 BaseFont bf BaseFont createFont KozMinPro Regular Identity V BaseFont NOT EMBEDDED Font font new Font bf 20 Ve
  • 将 Blazor .NET 6 WASM 部署到 GitHub 页面

    我正在尝试让 Blazor WASM 在 GitHub 页面中工作 我关注了这个视频 https www youtube com watch v nNxII6jvPvQ 我将它部署到这里 扩展 GH 页面 来源在这里 GH 页面源 我收到此
  • 如何用管道描述推荐基线

    我试图找到复合基线中关联的所有组件基线 我可以使用以下方式实现它 cleartool desc fmt rec bls CXp stream My Integration My PVOB I would save the receommen
  • 异步始终等待激活

    我想弄清楚是什么async await关键字是全部 但输出并不是我所期望的 控制台应用程序如下 class Program static void Main string args Console WriteLine Foo called
  • $and 查询没有返回结果

    好吧 这个简直要了我的命 也许已经晚了 我忘记了一些事情 但这应该有效 出于测试目的 我收集了大约 6000 个文档 有一个属性叫Priority在每个实例中其值为 2 以下两个查询分别返回all6000 个文档 Priority gt 1
  • MKMapKit 可拖动注释和绘制多边形

    我目前正在尝试允许用户向地图添加图钉 然后绘制连接这些图钉的多边形 但是我想扩展它以允许用户能够拖动引脚并且多边形将相应地更新 MKMapView 根据坐标数组中的排列从坐标数组中绘制多边形 如果我没有记错的话 我现在面临的问题是在用户重新
  • 无法启动 Rails Server - 找不到 JavaScript 运行时

    pallav pallav System Product Name Workspace blog rails server home pallav rvm gems ruby 2 0 0 p353 gems execjs 2 0 2 lib
  • pandas:相当于 SQL 的 datediff() 的函数?

    Python 的 pandas 中是否有与 SQL 的 datediff 函数等效的函数 这个问题的答案 在 DataFrame pandas 中添加包含日期之间天数的列解释如何计算天数差异 例如 gt gt gt pd to dateti
  • 如果加载时间太长,如何让 selenium 重新加载所需的 url

    如果加载过程花费太长时间 我希望 selenium 强制浏览器重新加载正在加载的页面 从 StackOverflow 我知道这段代码 new WebDriverWait driver 30 until ExpectedCondition
  • tkinter 和 asyncio,窗口拖动/调整大小阻止事件循环,单线程

    Tkinter 和 asyncio 一起工作时存在一些问题 它们都是想要无限期阻塞的事件循环 如果您尝试在同一线程上运行它们 其中一个将阻止另一个执行 这意味着 如果您想运行 tk 事件循环 Tk mainloop 则所有 asyncio
  • 如何从 Visual Studio 运行 cpack?

    我正在将一些包从 Linux 移植到 Windows 我发现 Visual Studio 与 cmake 具有相当好的集成 我可以使用 cmake 配置和构建项目 但是我不知道如何运行 cpack 来创建安装包 这个问题 如何在 Windo