No SOURCES given to target: xxx

本文介绍了在使用CMake时遇到的'No SOURCES given to target'错误,具体表现为CMake无法找到源文件rs-capture.cpp。解决方案是检查源文件的扩展名,确保其为.cpp格式,因为只有cpp文件才能被正确编译。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、问题描述

CMake Error at CMakeLists.txt: (add_executable):
Cannot find source file:

…/src/rs-capture.cpp

Tried extensions .c .C .c++ .cc .cpp .cxx .cu .m .M .mm .h .hh .h++ .hm
.hpp .hxx .in .txx

CMake Error at CMakeLists.txt: (add_executable):
No SOURCES given to target: xxx

二、解决办法

将文件hello_vscode_c.c改为hello_vscode_c.cpp
只有cpp才能编译

<think>嗯,用户遇到了CMake的错误,说是DebugTest目标没有提供SOURCES。首先,我需要回忆一下CMake中构建目标的基本要求。每个可执行文件或库目标都需要有源文件,否则就会报这个错误。 根据引用[4]提到的,使用target_sources()可以将源文件添加到现有目标中,这样依赖关系可以更本地化。所以,用户可能没有为DebugTest目标添加任何源文件,或者添加的方式有问题。 接下来,看看可能的解决方法。引用[5]中的例子是通过在CMakeLists.txt中添加一个空的源文件来解决类似的问题。虽然这只是一个变通方法,但可能适用于某些情况。不过更好的做法应该是正确指定源文件。 然后,引用[3]中的示例展示了如何用add_executable来创建目标并指定源文件。用户需要检查是否在创建DebugTest目标时使用了add_executable或add_library,并且是否正确列出了源文件。 可能的步骤包括:确认是否在add_executable中指定了源文件;如果目标是在其他目录定义的,是否使用target_sources添加了源文件;或者是否需要创建一个空的源文件作为临时解决方案。 另外,引用[4]还提到,如果没有正确使用target_sources,可能无法在其他目录中为目标添加属性,所以需要确保在定义目标的同一目录或正确使用target_sources来添加源文件。 总结一下,解决方案应该是检查DebugTest目标的定义,确保有源文件被正确添加,或者使用target_sources补充源文件,或者临时添加空文件。同时,确保CMake版本符合要求,因为某些命令可能在旧版本中不可用。</think>### CMake DebugTest目标未提供SOURCES错误解决方案 #### 问题分析 当CMake报错`DebugTest target no SOURCES`时,通常是因为目标(可执行文件或库)未被正确关联到任何源代码文件。CMake要求每个目标必须至少包含一个源文件(`.c`/`.cpp`等)[^3][^4]。 #### 解决方案步骤 1. **检查目标定义** 确保通过`add_executable()`或`add_library()`定义目标时指定了源文件: ```cmake add_executable(DebugTest main.cpp util.cpp) # 明确列出源文件 ``` 2. **使用`target_sources()`动态添加源文件** 若目标定义在父目录,可以通过`target_sources()`在子目录中追加源文件[^4]: ```cmake target_sources(DebugTest PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/subdir/source.cpp) ``` 3. **临时解决方案:添加空源文件** 若项目结构限制,可创建空文件作为占位符[^5]: ```bash touch empty.cpp ``` ```cmake add_executable(DebugTest empty.cpp) # 占位文件 ``` 4. **验证依赖关系本地化** 确保所有与目标相关的属性(如`target_include_directories()`)在定义目标的同一CMake作用域内配置。 #### 完整示例 ```cmake # 主CMakeLists.txt cmake_minimum_required(VERSION 3.15) project(DebugTest) add_executable(DebugTest) # 先声明目标 # 子目录中补充源文件 add_subdirectory(src) # src/CMakeLists.txt target_sources(DebugTest PRIVATE main.cpp utils.cpp) target_include_directories(DebugTest PRIVATE include) # 头文件目录 ``` #### 版本兼容性说明 - `target_sources()`需要CMake 3.12及以上版本[^4] - 旧版本需在`add_executable()`中直接指定所有源文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vsropy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值