cmake
config_error
ai_generated
true
CMake 错误:add_executable 无法创建目标 "myapp",因为没有指定源文件。
CMake Error: add_executable cannot create target "myapp" because no source files were specified.
ID: cmake/add-executable-no-sources
95%修复率
90%置信度
1证据数
2023-03-22首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| 3.10 | active | — | — | — |
| 3.16 | active | — | — | — |
| 3.22 | active | — | — | — |
| 3.26 | active | — | — | — |
根因分析
add_executable 命令在未指定任何源文件参数的情况下被调用,可能是由于变量展开缺失或列表为空。
English
The add_executable command was called without any source file arguments, either due to a missing variable expansion or an empty list.
官方文档
https://cmake.org/cmake/help/latest/command/add_executable.html解决方案
-
检查保存源文件的变量:在 add_executable 之前添加 message(STATUS "SOURCES=${SOURCES}")。确保它不为空。例如,如果 SOURCES 是通过 file(GLOB ...) 设置的,请验证 glob 模式与文件匹配。 -
在 add_executable 中显式列出源文件:add_executable(myapp main.cpp utils.cpp)。避免使用空变量。
-
如果使用宏或函数,请确保正确传递参数:function(my_add_executable name) add_executable(${name} ${ARGN}) endfunction()。调用时至少提供一个源文件。
无效尝试
常见但无效的做法:
-
Adding a dummy source file like 'main.cpp' without checking if it exists
80% 失败
If the file does not exist, CMake will later fail with 'Cannot find source file'. The root cause (empty variable) remains unaddressed.
-
Removing the add_executable call entirely and relying on add_library
90% 失败
The project needs an executable target; removing it breaks the build logic, and the error shifts to missing target.
-
Setting CMAKE_MINIMUM_REQUIRED to a lower version
95% 失败
The error is not version-dependent; it is a syntax/argument error that is caught at parse time regardless of CMake version.