CMake:设置目标源目录

2023-11-25

我有一个 C++ 项目,其中所有实现源文件 (*.cpp) 都驻留在src项目目录中的目录。某些文件位于其他子目录中。假设有 50 个文件src/foo/。我需要将这些文件列为add_library和/或target_sources功能。

现在,无论在哪里,都不鼓励自动添加目录中的所有文件,这对我来说很好。所以我将手动列出所有文件;但重复公共前缀src/foo/50次看起来真的很傻而且很烦人。

In target_sources 的文档 it says

相对源文件路径被解释为相对于当前源目录(即 CMAKE_CURRENT_SOURCE_DIR)。

所以我添加了set(CMAKE_CURRENT_SOURCE_DIR "src/foo/")在致电之前target_source但没有成功。 (我收到“找不到源文件”错误。)

那么,如果可能的话,实现我想要的目标的正确方法是什么?

注意:项目的(公共)头文件 (*.hpp) 位于include目录(外部src)。这是很好的配置(无需列出各个文件)target_include_directories功能。


但重复公共前缀 src/foo/ 50 次

只需在源前面加上前缀即可。

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

CMake:设置目标源目录 的相关文章

  • Exit() 时是否调用基本对象析构函数?

    我意识到这个问题已经出现过几次 但我试图获得上述问题的明确答案 但我不断遇到相互矛盾的信息 我需要知道的是 当我使用 exit 时 基本类对象是否被破坏 我知道需要删除动态内存 但我的意思更像是 include
  • 在 CPP 类中将 C 函数声明为友元

    我需要在 C 函数中使用类的私有变量 我正在做这样的事情 class Helper private std string name public std getName return name friend extern C void in
  • 前向声明类型和“已声明为类类型的非类类型”

    我对以下代码有问题 template
  • extern 声明和函数定义都在同一文件中

    我只是浏览了一下gcc源文件 在gcc c 我发现了类似的东西 extern int main int char int main int argc char argv 现在我的疑问是extern是告诉编译器特定的函数不在这个文件中 但可以
  • 强制初始化模板类的静态数据成员

    关于模板类的静态数据成员未初始化存在一些问题 不幸的是 这些都没有能够帮助我解决我的具体问题的答案 我有一个模板类 它有一个静态数据成员 必须为特定类型显式实例化 即必须专门化 如果不是这种情况 使用不同的模板函数应该会导致链接器错误 这是
  • RestSharp获取序列化输出

    我正在寻找一种方法来访问 AddBody 调用的序列化结果 我正在使用内置的 RestSharp 序列化器 例子 class Foo public string FooField void SendRecord var f new Foo
  • 语音识别编程问题入门

    所以 你们可能都看过 钢铁侠 其中托尼与一个名为贾维斯的人工智能系统进行交互 演示剪辑here http www youtube com watch v Go8zsh1Ev6Y 抱歉 这是广告 我非常熟悉 C C 和 Visual Basi
  • 如何使用 Regex.Replace 从字符串中删除数字?

    我需要使用Regex Replace从字符串中删除所有数字和符号 输入示例 123 abcd33输出示例 abcd 请尝试以下操作 var output Regex Replace input d string Empty The d标识符
  • 什么是空终止字符串?

    它与什么不同标准 字符串 http www cplusplus com reference string string 字符串 实际上只是一个数组chars 空终止字符串是指其中包含空字符的字符串 0 标记字符串的结尾 不一定是数组的结尾
  • 如何将AVFrame转换为glTexImage2D使用的纹理?

    如您所知 AVFrame 有 2 个属性 pFrame gt data pFrame gt linesize 当我从视频 sdcard test mp4 android平台 读取帧后 并将其转换为RGB AVFrame副 img conve
  • 不可变类与结构

    以下是类与 C 中的结构的唯一区别 如果我错了 请纠正我 类变量是引用 而结构变量是值 因此在赋值和参数传递中复制结构的整个值 类变量是存储在堆栈上的指针 指向堆上的内存 而结构变量作为值存储在堆上 假设我有一个不可变的结构 该结构的字段一
  • 将函数参数类型提取为参数包

    这是一个后续问题 解包 元组以调用匹配的函数指针 https stackoverflow com questions 7858817 unpacking a tuple to call a matching function pointer
  • 如何在 C# 中创建异步方法?

    我读过的每一篇博客文章都会告诉您如何在 C 中使用异步方法 但由于某些奇怪的原因 从未解释如何构建您自己的异步方法来使用 所以我现在有这段代码使用我的方法 private async void button1 Click object se
  • Visual Studio 2015:v120 与 v140?

    仅供参考 Win10 x64 我今天开始尝试 Visual Studio 2015 在弄清楚如何运行 C C 部分后 我尝试加载一个大型个人项目 该项目使用非官方的glsdk http glsdk sourceforge net docs
  • C++:为什么 numeric_limits 对它不知道的类型起作用?

    我创建了自己的类型 没有任何比较器 也没有专门化std numeric limits 尽管如此 由于某种原因 std numeric limits
  • C++:二叉树所有节点值的总和

    我正在准备面试 我被一个二叉树问题困住了 我们如何计算二叉树所有节点中存在的值的总和 优雅的递归解决方案 伪代码 def sum node if node NULL return 0 return node gt value sum nod
  • CMake 创建可执行文件时未定义的引用

    我是 CMake 新手 我正在尝试编译我的项目 该项目创建了一些静态库和一些可执行文件 下面是我拥有的文件结构的示例 PROJECT SRC 子项目 1该文件夹的 cpp 所有源文件 和CMakeLists txt 1 创建静态库 子项目
  • 如何在 sql azure 上运行 aspnet_regsql? [复制]

    这个问题在这里已经有答案了 可能的重复 将 ASP NET 成员资格数据库迁移到 SQL Azure https stackoverflow com questions 10140774 migrating asp net membersh
  • 无法将字符串文字分配给装箱的 std::string 向量

    这是我的类型系统的简化版本 include
  • MySqlConnectionStringBuilder - 使用证书连接

    我正在尝试连接到 Google Cloud Sql 这是一个 MySql 解决方案 我能够使用 MySql Workbench 进行连接 我如何使用 C 连接MySqlConnectionStringBuilder 我找不到提供这三个证书的

随机推荐

  • 另一个组件中的 MVC 6 RC2 控制器

    在 MVC 6 RC1 中我们使用了IAssemlbyProvider接口来注册在运行时发现的程序集并注入其他控制器类型 以类似的方式时尚到这篇文章 现在随着 RC2 的发布IAssemblyProvider已被删除并更改为 见参考资料 目
  • 为函数的参数分配默认值的困难

    在一个类中 我定义了一个私有常量 我尝试使用该常量作为函数参数的默认值 class Foo instance variable private let DefaultValue 10 Compiler error Cannot use in
  • 将android logcat数据写入文件

    每当用户想要收集日志时 我想将 Android logcat 转储到文件中 通过 adb 工具 我们可以使用以下命令将日志重定向到文件adb logcat f filename 但是我如何以编程方式执行此操作 这是一个example读取日志
  • Collections.defaultdict 与普通 dict 的区别

    我已经阅读了 python 文档中的示例 但仍然无法弄清楚这个方法的含义 有人可以帮忙吗 这是 python 文档中的两个示例 gt gt gt from collections import defaultdict gt gt gt s
  • 使用 Java 进行 ElasticSearch 聚合

    我想在我的 java 应用程序中进行聚合 首先 我使用curl 构建了REST 查询 它看起来像 curl XGET localhost 9200 analysis search pretty H Content Type applicat
  • 根据设备(iPhone 或 iPad)不同的设备方向

    我正在开发一个具有以下要求的通用项目 对于 iPhone 我只想要纵向 对于 iPad 仅限风景 我该怎么做iOS 8 迅速 在我看来 按照 ScarletMerlin 的建议 更改 info plist 中的键是满足我必须满足的要求 每种
  • 英特尔编译器 (C++) 在 std::vector 上减少 OpenMP 问题

    从OpenMP 4 0开始 支持用户定义的缩减 所以我在 C 中准确地定义了 std vector 的减少here 它在 GNU 5 4 0 和 GNU 6 4 0 上运行良好 但在 intel 2018 1 163 上它会返回随机值以进行
  • 模块在 Perl 核心中存在多久了?

    我实际上感兴趣的模块是 Sys Hostname 但作为一个更普遍的问题 我如何知道特定模块成为核心模块多久了 我对 Perl 版本很好奇 Would 模块 核心列表 help 从 Perl 内部 print Module CoreList
  • 如果 Spark 数据帧特定列中的所有条目均为空,则删除

    使用 Pyspark 我如何选择 保留所有columns包含非空值的 DataFrame 或等效地删除所有不包含数据的列 编辑 根据 Suresh 请求 for column in media columns if media select
  • Rails has_many :通过连接模型中的额外属性查找

    Ruby 和 Rails 都是新手 但我现在已经接受了书本教育 这显然没有任何意义 哈哈 我有两个模型 事件和用户通过表 EventUser 加入 class User lt ActiveRecord Base has many event
  • 将 pyodbc 游标结果输出为 python 字典

    如何序列化 pyodbc 游标输出 来自 fetchone fetchmany or fetchall 作为 Python 字典 我正在使用 Bottlepy 并需要返回 dict 以便它可以将其作为 JSON 返回 如果您事先不知道列 请
  • 将整数转换为位

    我有字节到二进制字符串的函数 std string byte to binary unsigned char byte int x 128 std ostringstream oss oss lt lt byte 255 0 for int
  • 我如何获得可用的时区(android:settings)

    我想要得到时区 我可以在设置中看到 日期和时间 gt 是的 我知道 在 java android 中可以通过以下方式获取所有时区TimeZone getAvailableIDs 但我只想获取存在于的时区 正如您所注意到的 可以获得所有的列表
  • r - 如何在多个面板中绘制图文

    I was trying to plot dynamic graph in different panels as it could be done on the website using group such as 但它应该是动态的使用
  • Java 中的“final”关键字如何工作? (我仍然可以修改对象。)

    在Java中我们使用final带变量的关键字指定其值不可更改 但我发现您可以更改类的构造函数 方法中的值 同样 如果变量是static那么就是编译错误 这是代码 import java util ArrayList import java
  • 如何重新排列数组项,将依赖项移动到顶部?

    我有以下内容array其中每一项可能 或可能不依赖于 另一项 test array c gt array depends gt b a gt array b gt array depends gt a d gt array depends
  • 即使运行 npm install 后,npm Gulp 依赖项也丢失

    我有一个使用 Gulp 的项目 我将项目部署到 Ubuntu 服务器上 现在想要编译资产 这是我的 gulpfile 目前所做的全部工作 安装 Node 和 npm 后我运行npm install从我的项目的根目录安装依赖项 package
  • 如何使用反应选择来自定义渲染每个下拉项下方的子文本?

    我试图弄清楚如何利用反应选择中的自定义组件来渲染包含带有潜文本的项目的下拉列表 我查看了以下每个组件 https react select com components并且不确定哪一个最适合我的需求 从组件列表来看 我相信option组件的
  • 从地理坐标获取时区的算法

    我想编写应用程序 用户可以在地图上指向任何地方 不仅是城市 并获取该地方的时区 我应该使用什么数据结构 应用程序没有互联网连接 和算法 我在哪里可以获得所需的数据 我不会比将地图划分为 24 个矩形更准确 我将用 Java ME 编写我的应
  • CMake:设置目标源目录

    我有一个 C 项目 其中所有实现源文件 cpp 都驻留在src项目目录中的目录 某些文件位于其他子目录中 假设有 50 个文件src foo 我需要将这些文件列为add library和 或target sources功能 现在 无论在哪里