具有自动生成源的 Cmake 可执行文件

2024-01-24

我想从 test_runner.cpp 中创建一个可执行文件:

add_executable(myexe ${CMAKE_CURRENT_BINARY_DIR}/test_runner.cpp)

但这个特定的 cpp 文件本身是在预构建命令中自动生成的:

add_custom_command(
    TARGET myexe PRE_BUILD
    COMMAND deps/cxxtest-4.4/bin/cxxtestgen --error-printer -o "${CMAKE_CURRENT_BINARY_DIR}/test_runner.cpp" src/My_test_suite.h
    WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
)

但现在我无法生成新的 cmake 构建文件,因为它抱怨缺少源代码,而在预构建之前确实缺少源代码。


问题的关键在于应用GENERATED财产 http://www.cmake.org/cmake/help/v3.3/prop_sf/GENERATED.html到“test_runner.cpp”。这告诉 CMake 不要在配置时检查它的存在,因为它是作为构建过程的一部分创建的。

您可以手动应用此属性(例如使用set_source_files_properties)。然而,处理这个问题的正确方法是使用另一种形式add_custom_command http://www.cmake.org/cmake/help/v3.3/command/add_custom_command.html, i.e. add_custom_command(OUTPUT ...)而不是add_custom_command(TARGET ...).

如果您指定“test_runner.cpp”作为输出add_custom_command(OUTPUT ...)调用,那么使用它的任何目标(在本例中为“myexe”)将导致在构建该目标之前调用自定义命令。

因此,您实际上只需将代码更改为:

set(TestRunner "${CMAKE_CURRENT_BINARY_DIR}/test_runner.cpp")
add_executable(myexe ${TestRunner})
add_custom_command(
    OUTPUT ${TestRunner}
    COMMAND deps/cxxtest-4.4/bin/cxxtestgen --error-printer -o "${TestRunner}" src/My_test_suite.h
    WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有自动生成源的 Cmake 可执行文件 的相关文章

  • 如何使用 C# 中的参数将用户重定向到 paypal

    如果我有像下面这样的简单表格 我可以用它来将用户重定向到 PayPal 以完成付款
  • “构建”构建我的项目,“构建解决方案”则不构建

    我刚刚开始使用VS2010 我有一个较大的解决方案 已从 VS2008 成功迁移 我已将一个名为 Test 的控制台应用程序项目添加到解决方案中 选择构建 gt 构建解决方案不编译新项目 选择构建 gt 构建测试确实构建了项目 在失败的情况
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 按成员序列化

    我已经实现了template
  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • 重载<<的返回值

    include
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低

随机推荐

  • 一个类什么时候应该是 Comparable 和/或 Comparator?

    我见过同时实现这两个功能的类可比 and 比较器 这是什么意思 我为什么要使用其中一种而不是另一种 以下文字来自比较器与可比较器 http www digizol com 2008 07 java sorting comparator vs
  • CIDR 地址不在 VPC 的 CIDR 地址范围内

    我已在适用于 AWS 的新 VPC 上尝试了 CIDR 块的所有 IP 范围组合 我当前的 CIDR 是172 31 0 0 16 171 31 0 0 32 CIDR Address is not within CIDR Address
  • SignalR 不使用服务器上的会话

    当我尝试访问HttpContext从 HUB 返回的当前会话null 我尝试使用该界面IRequiresSession但它不起作用 有人能帮我吗 SignalR 连接 包括客户端所有 Hub 操作的底层连接 不支持会话状态 如果您愿意 您可
  • Python SqlAlchemy 实用生成表类

    给定表名列表 我尝试以编程方式生成 SqlAlchemy 数据库表类 这是我所做的 def generate table class list engine base declarative base engine table names
  • SSDT 未解决参考错误 SQL71561

    我已将数据库导入到数据库项目中 但一开始我就收到了 200 多个有关未解析引用的错误 现在我已经阅读了一些像这样的帖子和网站 http blogs msdn com b bahill archive 2009 08 26 using sel
  • JPA 不急切地加载所有内容

    我在通过 OpenJPA 实现利用 JPA 1 0 时遇到问题 我的数据模型由一个 Trip 组成 该 Trip 与 Leg 具有一对多关系 与 Passenger 具有一对多关系 Leg 和 Passenger 在 PassengerLe
  • SQL 多重连接语句

    当我的 SQL 语句中只有一个内部联接时 它运行得很好 我尝试加入第二个表 现在收到一条错误消息 指出存在语法错误 缺少运算符 这里有什么问题吗 adsFormView SelectCommand SELECT FROM tableCour
  • 如何根据 Big Query 中的 UTC 时间戳在 Data Studio 中显示本地时区的日期/时间

    我希望 Google Data Studio 报告使用用户的本地时区显示销售数据 包括按小时销售的热图报告 我将数据存储在 BigQuery 中 时间戳字段存储为 UTC Per 听起来时间戳应该存储为 UTC 我正在这样做 我认为 Dat
  • 在 PySpark 中使用 Apache Spark 数据帧删除重音的最佳方法是什么?

    我需要从不同数据集中删除西班牙语和其他语言字符的重音 我已经根据这里提供的代码做了一个函数post https stackoverflow com questions 517923 what is the best way to remov
  • OOP Javascript - 隔离类内的对象

    我试图拥有一个可以创建多个实例的主对象 每个实例都继承子对象 具有唯一 隔离的属性 然而 当我这样做时 所有创建的对象的对象属性 更改后 都会发生变化 我可能没有正确解释这一点 但这个例子应该很清楚 Main function Extend
  • JQuery 抖动对错误的影响

    当用户输入不正确的信息时 我试图在我的登录页面上应用摇动效果 此时 如果用户提交了不正确的详细信息 页面将刷新 打印 PHP 通知 并通过 JS 使通知 div 可见 我正在尝试使用变得可见的通知来识别信息不正确并切换摇动效果 HTML d
  • 我想在 print 语句之后而不是之前向用户询问 c 的值。怎么做?

    该程序询问 a b 和 c 的值 然后打印 print 语句 我想在打印 print 语句之前询问 c 的值 set serveroutput on set verify off DECLARE a number a b number a
  • Magento:系统/配置在多选中添加自定义值

    我创建了一个简单的模块 我已经创建了system xml 有一个字段多选我想在多选字段中添加自定义值 是否可以在多选字段中添加自定义值
  • MVC DateTime 文本框格式问题

    我想做类似的事情 model PickupDate ToString d 但 MVC4 不太喜欢这样 PickupDate is a DateTime字段 我想在视图中显示时去掉时间部分 同时保留new id date1 绑定的代码Text
  • Rails ActiveJob - 处理 ActionMailer::DeliveryJob 中的异常的好方法是什么

    我在用ActiveJob Sidekiq在我的 Rails 项目中进行任务处理 我直接使用发送邮件MyMailer some deliver later 它会自动创建一个ActionMailer DeliveryJob任务并将其放入Side
  • 如何使用ndb光标翻到上一页?

    我无法设法进入 ndb 分页中的 上一页 我已经检查过文档 https developers google com appengine docs python ndb queries cursors还有这个类似的在这里提问 https st
  • jQuery 中触发退格键

    如何在 jQuery 中触发退格键事件 以下示例不起作用 var e jQuery Event backspace keyCode 8 myarea trigger e 你实际上无法触发它 例如 您可以从某个输入中删除最后一个字符 但无法触
  • 返回范围的 SQL Select 查询[重复]

    这个问题在这里已经有答案了 可能的重复 MS SQL Server 中的行偏移 https stackoverflow com questions 187998 row offset in ms sql server 我想选择从 x1 到
  • 如何优雅地处理请求中的连接错误?

    我有一个简单的 python 电报机器人 代码如下 import requests import json from time import sleep import os filename bot last update target o
  • 具有自动生成源的 Cmake 可执行文件

    我想从 test runner cpp 中创建一个可执行文件 add executable myexe CMAKE CURRENT BINARY DIR test runner cpp 但这个特定的 cpp 文件本身是在预构建命令中自动生成