CMake add_custom_target():使用“调试->开始调试”运行自定义命令

2023-11-29

add_custom_target(NSISTest_Preprocess SOURCES precompress.nsi)
add_custom_command(TARGET NSISTest_Preprocess POST_BUILD
  COMMAND "${NSIS_PATH}" "...\\precompress.nsi")

安装程序的输出名称在 nsi 脚本中定义。现在我想简单地运行安装程序。如何指定在 Visual Studio 2010 中使用“调试->开始调试”或“调试->开始但不调试”时应该发生的情况?

我尝试过创建启动器.cmake脚本,它生成 .user 文件,但我认为它只适用于add_executable.

我也尝试过目标属性ARCHIVE_OUTPUT_NAME, LIBRARY_OUTPUT_NAME, RUNTIME_OUTPUT_NAME,但都没有任何效果。


The .user设置方法也适用于自定义目标。您可以添加 - 如果路径已知 - 安装程序的.exe作为命令,调试器应使用“调试->开始调试”来调用。

VS2010Test-调试.vcxproj.user.in

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <LocalDebuggerCommand>${_my_installer_path}</LocalDebuggerCommand>
    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
  </PropertyGroup>
</Project>

CMakeLists.txt

...
if (MSVC_VERSION GREATER 1599 AND
    NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/NSISTest_Preprocess.vcxproj.user")
    file(TO_NATIVE_PATH "[your installer's path goes here]" _my_installer_path)
    configure_file(
        "VS2010Test-Debug.vcxproj.user.in"
        "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/NSISTest_Preprocess.vcxproj.user"
    )
    file(
        COPY "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/NSISTest_Preprocess.vcxproj.user"
        DESTINATION "${CMAKE_CURRENT_BINARY_DIR}"
        FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
    )
endif()

背景

  • 我仅在文件不存在时复制/配置该文件,因为 VS 不处理外部更改.user文件很好
  • 我必须确保所有文件访问权限都设置正确,因为您的 SCM 可能会设置只读标志(由configure_file())

参考

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

CMake add_custom_target():使用“调试->开始调试”运行自定义命令 的相关文章

  • 卸载以前的版本安装新版本的安装项目

    我创建了一个安装项目并安装在Windows系统中 在安装安装项目之前 我将其设置为 DetectNewInstallerVersion true and RemovePreviousVersion True 我也每次都换版本 但是 如果我重
  • 如何向未知用户目录读取/写入文件?

    我正在尝试从用户目录 C Users USERNAME Test Source 读取和写入文件 但我未能成功找到任何有关如何自动检测用户名的资源 其中的 USERNAME上面的例子 或者无论如何 我可以让它读取和写入目录 而不需要知道用户名
  • 尽管 if 语句,Visual Studio 仍尝试包含 Linux 标头

    我正在尝试创建一个强大的头文件 无需更改即可在 Windows 和 Linux 上进行编译 为此 我的包含内容中有一个 if 语句 如下所示 if defined WINDOWS include
  • Windows 中的蓝牙 AVRCP 命令会触发哪些事件

    可以这么说 只是在做一些高级侦察 对于我的潘多拉客户 Elpis http elpis adamhaile net 我支持全局媒体键 键盘上的 MediaPlayPause MediaNext 等 并且我希望能够支持AVRCP http e
  • 如何让R使用所有处理器?

    我有一台运行 Windows XP 的四核笔记本电脑 但查看任务管理器 R 似乎一次只使用一个处理器 如何让 R 使用全部四个处理器并加速我的 R 程序 我有一个基本系统 我使用它在 for 循环上并行化我的程序 一旦您了解需要做什么 此方
  • 为什么我在 Windows 上使用 async 和 wait 时会收到 NotImplementedError 错误?

    我有这个代码 import os import time import asyncio async def run command args Example from http asyncio readthedocs io en lates
  • 如何迭代所有注册表项?

    我正在尝试迭代所有注册表项以查找 包含 并删除 jre1 5 0 14 值 有办法做到吗 下面的代码只是在特定键下找到jre1 5 0 14 我确实想迭代所有的键 顺便说一句 if 子句获取是否等于 jre1 5 0 14 但如果它包含 j
  • 使用管理员权限打开cmd(Windows 10)

    我有自己的 python 脚本来管理我的计算机上的 IP 地址 它主要在命令行 Windows 10 中执行netsh命令 您必须具有管理员权限 这是我自己的计算机 我是管理员 运行脚本时我已经使用管理员类型的用户 Adrian 登录 我无
  • Mac OS X 上的 /proc/self/cmdline / GetCommandLine 等效项是什么?

    如何在不使用 argc argv 的情况下访问 Mac OS X 上的命令行 在 Linux 上 我会简单地阅读 proc self cmdline or use GetCommandLine在 Windows 上 但我找不到 Mac OS
  • C# 获取子窗口句柄

    我正在用 C 启动一个进程 然后使用 SendMessage 将 Windows 消息发送到该进程 通常我将消息发送到 Process MainWindowHandle 但在某些情况下 我可能需要找到子窗口句柄并向那里发送消息 我将如何在
  • MSBuild 找不到异步所需的引用

    我们安装了 Visual Studio 2010 SP1 和 Async CTP SP1 刷新 包含使用的项目的解决方案async await从 VS IDE 构建时 关键字构建正常 另外 当构建时devenv build Debug so
  • Active Directory 会员资格提供商 - 如何对此进行扩展?

    我正在努力通过 AD Membership Provider 启动并运行 MVC 应用程序 但在解决这个问题时遇到了一些问题 我有一个基本配置设置并在我登录时工作 电子邮件受保护 cdn cgi l email protection 密码
  • 无法访问127.0.0.1

    我不知道这种情况何时开始发生 但结果是 127 0 0 1 无法在任何地方的任何端口上工作 例如 浏览器显示无法连接 以下是我的研究结果 localhost COMPUTER NAME 和实际 IP 地址都工作正常 我的主机文件中没有什么特
  • 重叠 I/O 的 GetOverlappedResult(bWait=TRUE) 与 WaitForSingleObject()

    当我在 Win32 api 上以重叠方式打开和读取文件时 我有几种方法来完成 IO 请求 包括等待文件句柄 或重叠结构中的事件 WaitForSingleObject GetOverlappedResultbWait TRUE 这两个函数似
  • 编译 Boost.Python 快速入门时出错

    我一直在尝试编译 Boost Python quickstart BOOST PATH libs python examples quickstart 示例 但遇到了问题 首先是我的环境 操作系统 Windows 7 旗舰版 64 位 Py
  • 使用 MingW 在 Windows 上传送 PyGObject/GTK+ 应用程序

    我在 Windows 上使用 PyGObject GTK 和 Python3 7 并且担心如何打包我的应用程序 借助Python官方生态系统 可以轻松使用冷冻机和venvs 然而 Windows 上的 PyGObject 和 GTK 需要
  • 具有多处理功能的 Python 代码无法在 Windows 上运行

    以下简单的绝对初学者代码在 Ubuntu 14 04 Python 2 7 6 和 Cygwin Python 2 7 8 上运行 100 但在 Windows 64 位 Python 2 7 8 上挂起 我使用另一个片段观察到了同样的情况
  • 如何在 Windows 上的 GCC 中链接 CS50 C 库

    我是 编程新手 一直在尝试使用以下命令编译我的代码MinGW https en wikipedia org wiki MinGW GCC 但我尝试包括CS50 https en wikipedia org wiki CS50 cs50 c
  • Git 预提交挂钩未在 Windows 上运行

    我刚刚开始研究 Git 挂钩 但我似乎无法让它们运行 我设置了一个本地存储库 因此我的项目文件夹中现在有一个 git 目录 我已将名为 pre commit cmd 的 cmd 文件添加到 C path to my project git
  • 如何在 PowerShell 中批量重命名文件?

    我正在尝试执行以下操作 Rename Item c misc xml tmp 我基本上想将目录中每个文件的扩展名更改为 tmp代替 xml 我似乎无法在 PowerShell 中找到直接的方法来执行此操作 来自帮助文档中的示例4Rename

随机推荐

  • 如何显示指定目录下的文件列表

    如何在PyQt窗口中以ListView的方式显示代码中指定目录下的文件 示例 就像在此 QFileSystemModel 对话框应用程序的右窗格中一样 你必须创建2个QFileSystemModel 一个将显示目录 另一个将显示文件 改变视
  • SpringMVC url 重写与 tuckey UrlRewriteFilter

    如何在 Spring MVC 中重写 url塔基的 UrlRewriteFilter像这样 From http localhost 8080 demo api do method getUser uid 1001 to http local
  • 单元测试自定义 OnRender-Method

    我有一个自定义控件MyControl它继承自Canvas并且里面有自己的逻辑OnRender 方法 它应该在绘图上下文中绘制一些矩形和文本 public class MyControl Canvas protected override v
  • PHP:如何填充数组中的目录结构

    我正在开发一个管理面板 显示服务器上特定位置的目录结构 我有一个递归 php 函数 可以迭代每个文件和文件夹 我不明白的是如何将此目录结构存储在 php 关联数组中 如下所示 array foldername1 0 file if the
  • 为什么这一点很明确:两者都在全球范围内行动?

    Issue 据我所知 清除浮动主要适用于父项 但是我的模板在帖子缩略图之后存在一个问题 其中clear both作用于整个内容包装器 如果不清除浮动 细线将粘在缩略图右侧的文本上 我想要做的是将线置于缩略图或文本下方 45px 处 取决于较
  • GLSL 自旋锁永不终止

    我正在尝试实现一个 GLSL 自旋锁 以便能够实现单通道深度剥离 我遇到了麻烦 因为锁定纹理使用的示例很少 我必须承认 我真的不知道自己在做什么 所以为了安全起见 我描述的上下文可能比必要的更多 我编写了一个片段程序 它实际上什么也不做 v
  • 获取地图区域的位置(html)?

    这可能吗 我正在尝试查找元素的 x 和 y 坐标与浏览器相关 var position this position x position left y position right 不起作用 有什么办法可以做到这一点吗 http adams
  • 0和1数量相同的二进制数

    当我解决的时候欧拉项目问题 15我意识到它可以通过从开始到结束的路线的组合方式来解决 生成的路由始终具有相同大小的右或下选择 或 0 和 1 并且右路由始终具有相同数量的 0 和 1 因此 二进制字中具有相同数量 0 和 1 的数字的数量为
  • 如何将域名指向 heroku 应用程序

    虽然我已经在 VPS 上完成了此操作 但我从未为 heroku 应用程序做过此操作 现在我必须为一家相当大的公司执行此操作 所以我真的想要一个简单的要点列表来说明如何执行此操作 我读了这些说明 我还是有点不清楚它们到底是什么意思 再说一遍
  • 正则表达式匹配第二次出现字符后的相邻数字

    陷入以下问题 我有一个字符串 ABC 123 456XX 我想使用正则表达式提取第二个句点之后的 3 个数字字符 真的很挣扎 并且会感激任何新的见解 这是我得到的最接近的 但它并不是很接近我想要的 d 3 感谢您提前提供的任何帮助 谢谢 如
  • 如何在 JUnit4 中按特定顺序运行测试方法?

    我想执行由以下注释的测试方法 Test按特定顺序 例如 public class MyTest Test public void test1 Test public void test2 我想确保运行test1 before test2 每
  • 获取当前正在运行的应用程序的列表,而不是进程c#

    我知道您可以使用以下命令获取当前正在运行的进程的列表Process processes Process GetProcesses or Process processes Process GetProcessesByName process
  • 从邮递员到 Microsoft Dynamics crm 365 的 POST/GET 请求

    我试图使用 Web API 创建实体 因此 使用我的实例 url client id client secret 我可以成功生成访问令牌和刷新令牌 但每当我尝试使用该 access token 发出任何发布请求时 我都会收到 401 未经授
  • 在图像顶部绘制矩形的浏览器友好方式 R Shiny

    我编写了一个闪亮的应用程序 允许用户在图像顶部绘制矩形 下面是最小的可重现示例 我目前的方法的问题是每次添加矩形时 都会创建一个新图像 将其写入磁盘并进行渲染 发送到用户的浏览器 这需要相当长的时间 当互联网连接速度很慢时 这会变得非常烦人
  • 统一码格式

    我正在处理字符串格式 对于英语 格式很整洁 但对于 unicode 字符 格式很随意 谁能告诉我原因吗 例子 form u lt 15 lt 3 a u u u u u u u u u u for i in range 0 10 print
  • 结束迭代器递减的可移植性如何?

    刚刚遇到减量end 我公司源代码中的迭代器对我来说看起来很奇怪 据我记得这在某些平台上有效 但在其他平台上无效 也许我错了 但是我在标准中找不到任何有用的东西 标准只是说end 返回一个迭代器 它是结束后的值 但它保证是可递减的吗 这样的代
  • 雄辩的 javascript 递归示例中的混乱

    这段递归代码来自 eloquent javascript 一书 function power base exponent if exponent 0 return 1 else return base power base exponent
  • 如何访问Java中自定义注释中定义的字段

    我有以下 Java 代码 import java lang reflect Field public class AnnotationTest public interface Size int size int location Size
  • 无法连接到 Openfire 服务器(使用 smack api)

    我正在尝试使用 smack 4 1 0 运行此代码 Thread D new Thread new Runnable Override public void run SmackConfiguration setDefaultPacketR
  • CMake add_custom_target():使用“调试->开始调试”运行自定义命令

    add custom target NSISTest Preprocess SOURCES precompress nsi add custom command TARGET NSISTest Preprocess POST BUILD C