CMake中使用get_target_property判断Target是否存在

2023-10-27

              使用Cmake的add_custom_target建立自定义的Target后,必须将这个Target加入all依赖,否则生成的Makefile不会执行这个Target的内容。这样会有个问题,如果需要编译如下目录:

目录下有N个目录,这些目录下或是目录,或是文件,那么递归下去,就会有若干CMakeLists.txt,也就是说,会有若干个add_custom_target(all ...)的存在。进入单独目录编译或许不要紧,但是如果我们在顶层或者中间层执行cmake生成Makefile,就会报重复Target的错误,这个重复的Target就是多次添加的all。错误如下:

add_custom_target cannot create target "all" because
  another target with the same name already exists.  The existing target is a
  custom target created in source directory
See documentation
  for policy CMP0002 for more details.

只能在叶子编译而不能在中上层编译,这样显然不行。一个可行的解决方案是,在向all中添加Target前࿰
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CMake中使用get_target_property判断Target是否存在 的相关文章

  • CMake 中 LINK_LIBRARIES 的递归列表

    我正在尝试获取链接到 CMake 中特定目标的所有库的绝对路径列表 以便在调用中使用add custom command 然而 get target property LINK LIBRARIES TARGET LINK LIBRARIES
  • Makefile 和 .Mak 文件 + CodeBlocks 和 VStudio

    我对整个 makefile 概念有点陌生 所以我对此有一些疑问 我正在 Linux 中使用 CodeBlocks 创建一个项目 我使用一个名为 cbp2mak 的工具从 CodeBlocks 项目创建一个 make 文件 如果有人知道更好的
  • 配置:错误:无法运行C编译的程序

    我正在尝试使用 Debian Wheezy 操作系统在我的 Raspberry Pi 上安装不同的软件 当我运行尝试配置软件时 我尝试安装我得到此输出 checking for C compiler default output file
  • 通过ExternalProject_Add 使用 pybind11 进行 CMake 项目的智能方法

    我正在使用编写一个 python 模块pybind11 with CMake3 9 4 因为方便所以想下载pybind11源文件使用ExternalProject Add in my CMakeLists txt 当我跑步时cmake 它不
  • 如果未设置,则从控制台读取 Makefile 变量

    我正在更新一个从外部源访问某些资源的 Makefile 即存在以下形式的规则 External cvs up 对于不受限制的资源 它可以按预期工作 现在 出现了功能漂移 外部资源需要更复杂的登录 因此规则已更改为与此没有太大不同的内容 Ex
  • 如何在 Makefile 中定义全局 shell 函数?

    我想定义一个shell函数 bin sh test do some complicated tests 1 2 if something then build thisway 1 2 else build otherway 1 2 fi 这
  • cmake 找不到 Qt4

    由于4 8 0已经发布 我重新安装了Qt 现在我也想使用cmake 为了使 cmake 工作 我记得必须添加 mingw bin 文件夹 QtSDK Desktop Qt 4 7 3 到Qt4 7 3中的PATH 所以我猜测在中会有一个类似
  • 在 MAC OSX 上使用 CMake 生成 .bundle 文件

    我想生成一个可执行文件 bundle文件于Mac OSX 10 6 8 using CMake 我的 CMakeLists txt 文件如下所示 cmake minimum required VERSION 2 8 PROJECT TEST
  • 如何在 makefile 中拥有正确的 .mod 顺序

    我正在尝试用 Fortran 为我的项目创建一个 Makefile 并使其可在现在的项目中重用 我经过多次尝试后得出的 Mkefile 如下 问题是它在少数情况下工作正常 但现在我有这个文件 main f90 初始 f90 参数 f90 函
  • 在cmake中设置PKG_CONFIG_PATH

    我已经在本地构建了 opencv 并将其安装到本地目录 不是系统默认目录 opencv pc存在于该本地文件夹中的 pkgconfig 文件夹下 我怎样才能找到这个opencv pc来自 cmake 因为我想从我的程序链接并包含 openc
  • 如何使用 CMake 安装文件层次结构?

    我使用以下方法创建了文件列表 file GLOB RECURSE DEPLOY FILES PROJECT SOURCE DIR install 我想将所有这些文件安装在 usr myproject 但我想维护已安装文件夹上的文件树 ins
  • 是否可以使用现有的 Makefile 在 Code::Blocks 中构建项目?

    编辑 我发现项目属性中有一个选项可以设置自定义生成文件 现在项目构建良好 现在 我偶然发现了如何在单击 运行 时指定要运行的目标可执行文件 代码 块 http www codeblocks org is an IDE https en wi
  • 什么是 C 语言的高效工作流程? - Makefile + bash脚本

    我正在开发我的第一个项目 该项目将跨越多个 C 文件 对于我的前几个练习程序 我只是在中编写了我的代码main c并使用编译gcc main c o main 当我学习时 这对我有用 现在 我正在独自开展一个更大的项目 我想继续自己进行编译
  • 使用星号更改多个源文件的 CMake 编译器标志

    我正在尝试调试与编译器优化相关的问题 O2 或以下版本没有问题 O3 出现段错误 并且我希望能够切换我的源代码块的编译器标志 以便我可以尝试缩小段错误的来源范围 我可以将全局优化级别设置为 O2 并更改单个文件的属性 如下所示 SET SO
  • Yocto 如何停止 cmake 在本机 sysroot 路径中查找链接?

    到目前为止 我正在尝试将 dlib python 模块添加到我的图像中 这是我正在研究的食谱 python3 dlib 19 21 1 bb SUMMARY A toolkit for making real world machine l
  • 如何使用cmake查找库?

    要将可执行文件与驻留在标准位置的库链接 可以在 CmakeLists txt 文件中执行以下操作 create executable generate mesh generate mesh cpp target link libraries
  • 如何通过仅调用一个命令来构建多个目标?

    我得到了一个像下面这样的 Makefile PHONY all all aaa 2 bbb 2 aaa 2 aaa 1 common 1 create 2 bbb 2 bbb 1 common 1 create 2 程序 create 2
  • 控制 make 命令的输出不那么冗长,不要回显每个命令

    目前 我正在使用 Makefile 来跟踪项目的所有依赖项和编译 问题是make只是输出它正在执行的所有操作 这使得很难发现 甚至读取 更重要的信息 例如编译器警告 有没有办法控制终端上显示哪些信息 我知道有一个 s沉默的选项make 但这
  • 了解 CMake 背后的目的[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我试图理解 CMake 背后的目的 为什么它被设计成现在这样 以下是我想回答的一些问题 为什么CMake会生成生成文件 https e
  • 将 gcov 与 CMake/CDash 结合使用的详细指南?

    我在我的项目中使用 CMake 并设置了 cdash 服务器以进行连续 夜间构建 一切运行良好 通过设置 crontab 我们可以将每小时 每晚的构建 测试结果自动上传到我们的 cdash 服务器 我的下一步是将测试覆盖率报告添加到构建中

随机推荐

  • kd树

    参考 1 统计学习方法 李航 2 https baike baidu com item kd tree 2302515 fr aladdin 3 http www jianshu com p ffe52db3e12b 4 http blog
  • error: device unauthorized.This adb server's $ADB_VENDOR_KEYS is not set

    以为是个复杂问题 百度之后将自己的手机屏幕解锁打开之后就成功连接上了 同样出问题的小伙伴可以看看是不是接口的问题 或者开发者模式没有打开
  • python中global用法实例分析

    lobal语句是适用于当前整个代码块的声明 它是全局变量的标识符 如果某名字在局部名字空间中没有定义 就自动使用相应的全局名字 没有global是不可能手动指定一个名字是全局的 在 global 中出现的名字不能在global 之前的代码中
  • 包裹快递

    包裹快递 背景 小K成功地破解了密文 但是乘车到X国的时候 发现钱包被偷了 于是无奈之下只好作快递员来攒足路费去Orz教主 描述 一个快递公司要将n个包裹分别送到n个地方 并分配给邮递员小K一个事先设定好的路线 小K需要开车按照路线给的地点
  • 记录几款vue的Tree树形控件

    一 Vue Beauty url https fe driver github io vue beauty components tree 特色 找了很多个框架 只有Vue Beauty是带连接线的 刚好项目能用上 二 iView url
  • Redis分布式锁原理及go的实现

    业务背景 后台定时任务刷新Redis的数据到数据库中 有多台机器开启了此定时同步的任务 但是需要其中一台工作 其他的作为备用 提高可用性 使用Redis分布式锁进行限制 拿到锁的机器去执行具体业务 拿不到锁的继续轮询 分布式锁原理 分布式锁
  • MindSpore【课程作业经验】基于TextCNN文本情感分类

    基于TextCNN文本情感分类 在本次实验中我们用mindspore实现TextCNN的针对aclImdb情感分类任务 数据加载 在这里基于TextCNN的方法我们需要指定文本句子长度 并且对句子进行处理 留下字母和空格其余符号删去 标定标
  • 深度学习神经网络中隐藏层的作用

    在神经网络中 隐藏层是介于输入层和输出层之间的一层或多层神经元组成的层级结构 隐藏层的存在是为了增强神经网络的表达能力和学习能力 以下是为什么神经网络中需要隐藏层的几个原因 非线性建模 隐藏层通过引入非线性变换 可以帮助神经网络对非线性关系
  • 3.2 Qt的moc机制

    转自 http www hellotongtong com Qt5base1 qtmoc intro html 3 2 Qt的moc机制 免费下载源码和PPT课件 在线视频课程 csdn 在线视频课程 51cto 好文章 来自 福优学苑 音
  • linux下Oracle服务的启动和关闭

    1 前言 确保我们能够访问oracle数据库包含两部分 一个是oracle实例 一个是监听 两个同时开启 我们才能正常的使用数据库 因此我们在关闭和启动oracle服务时 也需要同时操作实例和监听 能够操作linux的工具有很多 如 xsh
  • (中文详解篇)smallpt: 99行代码完成全局光照Path Tracing

    目录 0 什么是SmallPT Features 1 光线追踪需要了解知识 1 1 什么是全局光照 1 2 渲染方程 2 SmallPT代码分析 2 1 代码块1 2 2 代码块2 2 2 1 主函数第1步 设置呈像平面 2 2 2 主函数
  • MySQL数据库之基础查询语句(DQL数据查询语句)

    目录 一 查询条件 1 where子句 2 like模糊查询 二 查询结果处理 1 设置查询列 2 列的计算 3 as字段取别名 4 distinct 消除重复 5 函数 6 分组查询group by 7 排序 order by 8 分 查
  • ctf.show萌新_web1

    web1 id 100 or id 1000 就是用一个id小于999的来进行验证 然后再给他一个1000的值进行判断 web2 相同的原理 直接为 id 100 id 1000 web3 id 100 id 1000 web4 id 10
  • 初试讯飞星火认知大模型

    现在大模型忒火 chatGPT要翻要美刀很麻烦 bing new免费用起也不错 不过也要爬楼梯 国产的讯飞星火开放体验了 赶紧申请一下 很快就通过了 给了4个任务 1 写一首关于南山文峰塔的诗 要求含夜景描述 有点口水打油诗的味道 2 讲解
  • 产生java.lang.NullPointerException报错的原因

    产生java lang NullPointerException报错的原因 java lang NullPointerException 异常产生原因 public class Test public static void main St
  • Vue中created和mounted详解

    目录 一 生命周期概念 二 浏览器渲染过程 三 生命周期中的浏览器渲染 beforeCreate阶段 created阶段 beforeMount阶段 mounted阶段 四 使用场景 五 常见相关问题 一些页面跳转后 一些基础数据接口没有重
  • @Autowired 自动注入的service 对象为null

    问题 在controller层新加一个接口 调用自动注入的service对象操作数据库 发现service对象为null 排查 奇了怪了 同在一个controller里 其他接口怎么都正常 当然网上一顿找 发现有如下几种可能 当使用 Aut
  • 兆易创新2022数字芯片笔试题

    1 如下图assertion 请问图示波型哪个周期可以判定success 如图所示 本条断言的意思大体是 EN信号高电平有效 等到A上升沿的时候 其前一个周期 B 成立 等待0个周期 B C 成立 等待1个周期 D为1的过程中 B C 语句
  • 如何删除linux系统下的非空目录

    标题 如何删除linux系统下的非空目录 删除目录的常用shell命令为 rm rm 是一个用于删除文件和目录的命令行实用程序 与 rmdir命令不同 rm 可以删除空目录和非空目录 rmdir命令是什么的知识点补充在最下边 默认情况下 在
  • CMake中使用get_target_property判断Target是否存在

    使用Cmake的add custom target建立自定义的Target后 必须将这个Target加入all依赖 否则生成的Makefile不会执行这个Target的内容 这样会有个问题 如果需要编译如下目录 目录下有N个目录 这些目录下