CMake - 使用错误数量的参数调用 add_executable

2023-11-30

我正在尝试组织一个 C++ 项目,该项目开始有很多文件。我想创建两个使用 Cmake 共享一些源文件的可执行文件。我在这里发现了一个有趣的过程:

如何将源文件添加到另一个文件夹中

以下是我的版本

file(GLOB Common_sources RELATIVE "Common" "*cpp")
file(GLOB Mps_sources RELATIVE "Mps" "*.cpp")                 
file(GLOB Mss_sources RELATIVE "Mss" "*.cpp") 

add_executable(test_mss ${Common_sources} ${Mss_sources}) 
add_executable(test_mps ${Common_sources} ${Mps_sources})

但 CMake 抱怨

CMake Error at src/CMakeLists.txt:44 (add_executable):
add_executable called with incorrect number of arguments

CMake Error at src/CMakeLists.txt:45 (add_executable):
add_executable called with incorrect number of arguments

它说要看CMakeOutput.log,但是文件实在是太长了,我找不到有用的信息。

我检查了 CMake 文档,似乎它可以采用第二个源作为附加参数。https://cmake.org/cmake/help/v3.0/command/add_executable.html

我想找到这个bug的根源。我感觉我在这里遗漏了一些明显的东西。


您收到的错误是因为源列表传递给add_executable,实际上是空的。

收集资源的正确方法Common/子目录是:

file(GLOB Common_sources "Common/*.cpp")

指挥中文件(全局) RELATIVE option 不指定搜索目录。相反,它只是告诉 CMake 生成相对路径而不是绝对:

如果指定了 RELATIVE 标志,结果将作为给定路径的相对路径返回。

假设

file(GLOB Common_sources "Common/*.cpp")
# gets: /<path-to-source>/Common/my_source.cpp

然后(另请注意绝对路径在相对选项中)

file(GLOB Common_sources RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/Common" "Common/*.cpp")
# gets: my_source.cpp

和(当文件不在RELATIVE目录)

file(GLOB Common_sources RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/Mps" "Common/*.cpp")
# gets: ../Common/my_source.cpp
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CMake - 使用错误数量的参数调用 add_executable 的相关文章

  • 注销租约抛出 InvalidOperationException

    我有一个使用插件的应用程序 我在另一个应用程序域中加载插件 我使用 RemoteHandle 类http www pocketsilicon com post Things That Make My Life Hell Part 1 App
  • 如何将非静态类成员“std::bind”绑定到 Win32 回调函数“WNDPROC”?

    我正在尝试将非静态类成员绑定到标准WNDPROC http msdn microsoft com en us library ms633573 aspx功能 我知道我可以通过将类成员设为静态来简单地做到这一点 但是 作为一名 C 11 ST
  • C中的malloc内存分配方案

    我在 C 中尝试使用 malloc 发现 malloc 在分配了一些内存后浪费了一些空间 下面是我用来测试 malloc 的一段代码 include
  • 使用 LINQ2SQL 在 ASP.NET MVC 中的各种模型存储库之间共享数据上下文

    我的应用程序中有 2 个存储库 每个存储库都有自己的数据上下文对象 最终结果是我尝试将从一个存储库检索到的对象附加到从另一个存储库检索到的对象 这会导致异常 Use 构造函数注入将 DataContext 注入每个存储库 public cl
  • 由 IHttpClientFactory 注入时模拟 HttpClient 处理程序

    我创建了一个自定义库 它会自动为依赖于特定服务的 Polly 策略设置HttpClient 这是使用以下方法完成的IServiceCollection扩展方法和类型化客户端方法 一个简化的例子 public static IHttpClie
  • 将 Word 文档另存为图像

    我正在使用下面的代码将 Word 文档转换为图像文件 但是图片显得太大 内容不适合 有没有办法渲染图片或将图片保存到合适的尺寸 private void btnConvert Click object sender EventArgs e
  • 在 C 中初始化变量

    我知道有时如果你不初始化int 如果打印整数 您将得到一个随机数 但将所有内容初始化为零似乎有点愚蠢 我问这个问题是因为我正在评论我的 C 项目 而且我对缩进非常直接 并且它可以完全编译 90 90 谢谢 Stackoverflow 但我想
  • C# HashSet 只读解决方法

    这是示例代码 static class Store private static List
  • 外键与独立关系 - Entity Framework 5 有改进吗?

    我读过了several http www ladislavmrnka com 2011 05 foreign key vs independent associations in ef 4 文章和问题 https stackoverflow
  • CMake 无法确定目标的链接器语言

    首先 我查看了this https stackoverflow com questions 11801186 cmake unable to determine linker language with c发帖并找不到解决我的问题的方法 我
  • “接口”类似于 boost::bind 的语义

    我希望能够将 Java 的接口语义与 C 结合起来 起初 我用过boost signal为给定事件回调显式注册的成员函数 这非常有效 但后来我发现一些函数回调池是相关的 因此将它们抽象出来并立即注册所有实例的相关回调是有意义的 但我了解到的
  • 使用管道时,如果子进程数量大于处理器数量,进程是否会被阻塞?

    当子进程数量很大时 我的程序停止运行 我不知道问题是什么 但我猜子进程在运行时以某种方式被阻止 下面是该程序的主要工作流程 void function int process num int i initial variables for
  • Cmake 链接共享库:包含库中的头文件时“没有这样的文件或目录”

    我正在学习使用 CMake 构建库 构建库的代码结构如下 include Test hpp ITest hpp interface src Test cpp ITest cpp 在 CMakeLists txt 中 我用来构建库的句子是 f
  • 使用 %d 打印 unsigned long long

    为什么我打印以下内容时得到 1 unsigned long long int largestIntegerInC 18446744073709551615LL printf largestIntegerInC d n largestInte
  • C++ 函数重载类似转换

    我收到一个错误 指出两个重载具有相似的转换 我尝试了太多的事情 但没有任何帮助 这是那段代码 CString GetInput int numberOfInput BOOL clearBuffer FALSE UINT timeout IN
  • 按 Esc 按键关闭 Ajax Modal 弹出窗口

    我已经使用 Ajax 显示了一个面板弹出窗口 我要做的是当用户按 Esc 键时关闭该窗口 这可能吗 如果有人知道这一点或以前做过这一点 请帮助我 Thanks 通过以下链接 您可以通过按退出按钮轻松关闭窗口 http www codepro
  • 不同类型指针之间的减法[重复]

    这个问题在这里已经有答案了 我试图找到两个变量之间的内存距离 具体来说 我需要找到 char 数组和 int 之间的距离 char data 5 int a 0 printf p n p n data 5 a long int distan
  • 方法优化 - C#

    我开发了一种方法 允许我通过参数传入表 字符串 列数组 字符串 和值数组 对象 然后使用这些参数创建参数化查询 虽然它工作得很好 但代码的长度以及多个 for 循环散发出一种代码味道 特别是我觉得我用来在列和值之间插入逗号的方法可以用不同的
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List
  • 如何将 PostgreSql 与 EntityFramework 6.0.2 集成? [复制]

    这个问题在这里已经有答案了 我收到以下错误 实体框架提供程序类型的 实例 成员 Npgsql NpgsqlServices Npgsql 版本 2 0 14 2 文化 中性 PublicKeyToken 5d8b90d52f46fda7 没

随机推荐

  • Kahan求和算法GCC编译时计算误差较大

    我使用Kahan求和算法 inline void KahanSum float value float sum float correction float term value correction float temp sum term
  • C# 中的 Pop3 到 SMTP 消息自定义转发器

    我想编写一个服务 定期检查 POP3 帐户是否有新消息 并根据自定义业务逻辑将消息转发到适当的 收件人 并且可能还会更改 发件人 我可能需要在服务器上保留一些消息 直到某些条件准备好转发它们 我找到了一个使用 Chilkat NET 组件的
  • 如何在没有外部软件的情况下使用批处理脚本将二进制文件分割成一定大小的块?

    有很多原因想要将文件分割成块 主要是为了网络传输 例如电子邮件附件 但我确信有些场景可能需要我无法想象的这种东西 那么如何将文件分割成可以轻松组装回原始文件 包括非Windows系统 的块呢 有什么可能性 MAKECAB 内置的 Windo
  • XML 文件未使用 jdom 进行更新

    以下是我的 java 代码 用于读取 xml 文件并更新其中的一些值 public static void writeLexicon String word String tag int newFreq 0 int tagAvailabil
  • 尝试从 Mule 4 中的 XML 中删除命名空间时出错

    当我用 替换所有有效负载 env 和 xmlns 时 我看到类似 当文档没有根时尝试写入 END DOCUMENT 的错误 它抛出错误 Message Trying to write END DOCUMENT when document h
  • angularjs $anchorScroll 有时会刷新所有页面

    我有一个带有 angularjs 路由的应用程序 但在某些视图上我想滚动到某个特定的 div 并且我使用anchorScroll 但有时 并非所有时候 它会刷新所有页面 即使我停止事件传播 有人遇到过这个问题吗 scope redirect
  • 如何解决npm安装问题?

    我正在尝试安装 npm 包 npm ERR code EHOSTUNREACH npm ERR errno EHOSTUNREACH npm ERR request to https registry npmjs org express s
  • 如何将 DOM 元素脚本添加到 head 部分?

    我想将 DOM 元素添加到 HTML 的 head 部分 jQuery 不允许将 DOM 元素脚本添加到 head 部分 而是执行 参考 我想添加script标签并在其中编写脚本部分 var script head append scrip
  • Hadoop 目录/文件上次修改时间

    有没有办法获取hdfs中所有目录和文件的最后修改时间 我想创建显示信息的页面 但我不知道如何在一个 txt 文件中获取最后一次修改时间 看看是否有帮助 public class HdfsDemo public static void mai
  • JFreechart在图表上绘制圆弧

    我有 2 个问题 1 我试图使用形状注释在 XYplot 上绘制圆弧 我使用 XYLine 注释来绘制一条线 并且希望弧线从该线结束的地方开始 我在参数方面遇到一些问题 我希望弧的高度为 17 宽度为 44 并从绘图的点 3 0 17 开始
  • 有效地“应用”数组并保留结构

    我有一个矩阵数组 dims lt c 10000 5 5 mat array lt array rnorm prod dims dims 我想执行基于矩阵的运算 例如通过solve函数 在每个矩阵上 但保留数组的完整结构 到目前为止 我已经
  • 如何在发送前检查.Attachment.Add“文件名”是否成功

    我有一些代码可以创建邮件对象 Outlook 附加文件并发送它 Dim mobjOutlook mobjActiveExp mobjNewMail As Object Create Outlook objects Set mobjOutlo
  • AppDelegate、rootViewController 和 PresentViewController

    我正在做 Facebook 集成教程 如果用户具有当前状态的有效令牌 我想显示我的 MainViewViewController 否则我想显示 LoginViewController MainView AppDelegate m BOOL
  • spring amqp中使用spring webclient的正确方法

    我有以下用于使用来自rabbitmq的消息的spring amqp应用程序的技术堆栈 Spring boot 2 2 6 RELEASE Reactor Netty 0 9 12 RELEASE Reactor Core 3 3 10 RE
  • 谷歌导航意图

    我正在尝试直接从我的应用程序启动 Google 导航 以便它可以将我从起始地址导航到目标地址 因此 我有起始地址和目的地地址的纬度和经度坐标 并希望获得这些坐标的导航 但我不知道如何提供起始地址 导航仅使用我的 GPS 来获取我当前的信息
  • Swift webview xcode 发布数据

    我有一个网络视图 当前编码如下 let url NSURL string http example com let request NSURLRequest URL url monitorView loadRequest request 这
  • 列出 AWS .NET SDK 中的实例

    我正在编写代码以使用适用于 AWS 的 net SDK 列出实例 ID 和实例类型 我知道我需要使用DescribeInstancesRequest 类 我还认为我需要使用 ArrayList 来存储字符串输出和 foreach 循环来获取
  • 在单个产品页面上显示类别和品牌名称

    在 Woocommerce 中 我正在使用YITH WooCommerce 品牌插件处理产品品牌 我目前正在努力解决 WooCommerce 中我的简短描述下想要的固定文本 我想动态显示产品名称在那段文字中 有效 也是产品类别名称 CATE
  • SVN中的结果代码是什么意思?

    SVN中的结果代码是什么意思 我需要一个快速参考 有关更多详细信息 请参阅 SVNBook 工作副本文件和目录的状态 常见状态 U 工作文件已更新 G 存储库上的更改会自动合并到工作副本中 M 工作副本已修改 C 该文件与repo中的版本冲
  • CMake - 使用错误数量的参数调用 add_executable

    我正在尝试组织一个 C 项目 该项目开始有很多文件 我想创建两个使用 Cmake 共享一些源文件的可执行文件 我在这里发现了一个有趣的过程 如何将源文件添加到另一个文件夹中 以下是我的版本 file GLOB Common sources