CPack:从子目录(googletest 目录)中排除 INSTALL 命令

2023-12-06

我正在使用 CMake 进行项目,并使用 googletest 进行测试用例。 环顾互联网,通常的做法是将 googletest 源代码复制到存储库的子文件夹中,并将其包含在“add_subdirectory(googletest)”中。我就是这么做的。

现在我正在使用 CPack 为我的项目生成 debian 包。不幸的是,CPack 生成的包与我的项目一起安装 googletest。这当然不是我想要的。

查看 googletest 目录,我发现那里有一些 INSTALL cmake 命令,所以很清楚为什么会发生这种情况。现在的问题是——我该如何避免呢?我不喜欢从 googletest 修改 CMakeLists.txt 文件,因为我必须记住在更新时重新应用我的修改。是否有其他方法可以在 CPack 中禁用这些安装?


所以最初建议使用@Tsyvarev 提到的宏选项here:

# overwrite install() command with a dummy macro that is a nop
macro (install)
endmacro ()

# configure build system for external libraries
add_subdirectory(external)

# replace install macro by one which simply invokes the CMake
install() function with the given arguments
macro (install)
  _install(${ARGV})
endmacro(install)

Note ${ARGV} and ${ARGN}是相同的,但文档当前建议使用${ARGN}。还有宏覆盖前置的事实_原始宏名称没有记录,但它仍然是行为。查看代码here.

However,我从来没有让上面的代码正常工作。确实如此really奇怪的事情并且经常打电话install() twice.

另一种选择 - 也没有记录 - 是使用EXCLUDE_FROM_ALL:

add_subdirectory(external EXCLUDE_FROM_ALL)

根据一些评论我发现这会禁用install()对于该子目录。我认为它实际上做了什么EXCLUDE_FROM_ALL默认情况下对于所有install()命令也可能做你想要的。我还没有真正测试过,但值得一试。

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

CPack:从子目录(googletest 目录)中排除 INSTALL 命令 的相关文章

随机推荐

  • 使用 ncu (NsightComputeCli) 获取 nvprof 默认行为

    默认nvprof输出很棒 但是nvprof已被弃用 取而代之的是ncu 我怎样才能使ncu给我一个看起来更像的输出nvprof 最小工作示例 我有2个range以一种非常不理想的方式调用的函数 仅使用 1 个线程 比其他的需要更长的时间ra
  • 性能:子查询或连接

    我有一个关于子查询 连接另一个表的性能的小问题 INSERT INTO Original Person PID Name Surname SID SELECT ma PID new TBL Name ma Surname TBL SID F
  • 如何执行多个相继完成的 Alamofire 请求?

    我想执行多个 Alamofire 请求 但是 由于数据依赖性 新请求只能在前一个请求完成后才开始 我已经问过一个question一个更一般的异步请求示例 通过以下方法解决OperationQueue 然而 我并没有成功地用 Alamofir
  • fork()的执行顺序可以确定吗?

    我正在做教科书 操作系统概念第七版 的练习 我有点困惑如何fork 工作 据我了解 fork 创建一个与其父进程同时运行的子进程 但是 我们如何确切地知道哪个进程首先运行呢 我的意思是执行顺序 Problem使用以下命令编写 C 程序for
  • R CMD BATCH 或 Rscript 错误停止

    我不认为R CMD BATCH or Rscript应该在错误时停止 但我希望它停止 或类似的东西 作为一个例子 我有这个test R stop I really mean stop cat no I dont want this prin
  • 为 nth-child 和 nth-of-type 指定任意子级(无模式)列表

    所以我现在已经读了足够多的关于各种时髦的内容nth child and nth of type模式让第七个儿子的第七个儿子驾驶一艘宇宙飞船往返于冥王星 但我仍然没有找到一种方法来简单地以简洁的方式提供特定儿童的列表 它会像这样工作 td n
  • 判断SQLite数据库是否被锁定

    我读过关于如何检测 SQLite 数据库是否被锁定的其他答案 它建议使用sqlite3 busy handler sqlite3 busy timeout 我使用的是 Qt 它支持 SQLite 数据库 但这在这里并不重要 因为在我的应用程
  • MySQL注入查询

    我熟悉准备好的语句 并且我知道它们是防止 MySQL 注入的最佳实践 但我想知道这个 PHP MySQL 语句如何面临注入攻击的风险 result mysqli query db SELECT name FROM users WHERE i
  • Flash AS3 尝试获取外部 swf 时出现安全沙箱冲突

    嗨 我正在尝试从不同的服务器将 swf 文件加载到我的 Flash 应用程序 当我尝试将其加载到 flash IDE crl enter 上时 一切工作正常 但是当我将 swf 作为独立的 swf 文件运行或通过调试它时 我收到此错误 Se
  • 如何自定义像这样的按钮控件?

    我想制作一个像这样的自定义按钮控件 图像按钮可以 我是新用户 所以不能在这里发布图片 所以我上传了图片here 在尝试了一些教程后我现在有点绝望 任何建议都将受到高度赞赏 Thanks 更新于 08 10 2019 我很多年前就问过这个问题
  • 如何将xml元素绑定到对象成员变量中?

    我正在尝试使用 moxy 将 xml 解组为对象 下面是 xml 的示例
  • 创建有序计数器

    我一直在阅读如何super 作品 我碰到这个食谱演示了如何创建有序计数器 from collections import Counter OrderedDict class OrderedCounter Counter OrderedDic
  • 如何使用 C++ 代码中的 setsockopt() 调用更改 TCP 拥塞控制算法

    是否可以改变TCP拥塞控制算法 from Cubic to Reno或反之亦然使用套索克选择 call 来自 C 代码在Linux中 我正在寻找这样做的示例代码 您可以使用TCP CONGESTION用于获取或设置套接字的拥塞控制算法为下列
  • php检查数组值是否连续

    我有一个数组 dice 4 7 3 6 7 我需要一种方法来检查该数组中的每个值是否是连续的数字 有一个简单的方法可以做到这一点吗 尝试这个 dice array 4 5 2 6 7 function checkConsec d for i
  • 为什么在创建这个简单的物化视图示例时会出现 ORA-12054 错误?

    ALTER TABLE RECORDINGS ADD PRIMARY KEY ID CREATE MATERIALIZED VIEW LOG ON RECORDINGS TABLESPACE USERS NOLOGGING DROP MAT
  • R 中多个变量的 Shapiro-Wilk 正态性检验循环

    我有一个名为 My data 的数据集 以及三个名为 a b c 的变量 我的数据头是这样的 gt head My data variable A variable B value 1 Jul W1 18 780294 2 Jul W2 1
  • python3多进程共享numpy数组(只读)

    我不确定这个标题是否适合我的情况 我想分享 numpy array 的原因是它可能是我的情况的潜在解决方案之一 但如果您有其他解决方案也很好 我的任务 我需要实施一个迭代的算法与多重处理 而每个进程都需要有一份数据 这个数据很大 并且只读
  • 在MySQL中合并两个表之间的一列

    这是一个延续问题我上周问过 它涉及来自两个不同表的表列的组合 请考虑这个例子 我有一个包含这些值的表 vote orders a VOTE CANDIDATE RANKED CHOICE VOTES ORIGINAL VOTES 2 4 0
  • 泛型类型的模式匹配

    为什么我不能与 Node T 进行模式匹配 object Visitor def inorder T root Node T Unit root match case End gt return case Node T gt if root
  • CPack:从子目录(googletest 目录)中排除 INSTALL 命令

    我正在使用 CMake 进行项目 并使用 googletest 进行测试用例 环顾互联网 通常的做法是将 googletest 源代码复制到存储库的子文件夹中 并将其包含在 add subdirectory googletest 中 我就是