# CMake 错误：add_executable 无法创建目标 "myapp"，因为没有指定源文件。

- **ID:** `cmake/add-executable-no-sources`
- **领域:** cmake
- **类别:** config_error
- **验证级别:** ai_generated
- **修复率:** 95%

## 根因

add_executable 命令在未指定任何源文件参数的情况下被调用，可能是由于变量展开缺失或列表为空。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| 3.10 | active | — | — |
| 3.16 | active | — | — |
| 3.22 | active | — | — |
| 3.26 | active | — | — |

## 解决方案

1. ```
   检查保存源文件的变量：在 add_executable 之前添加 message(STATUS "SOURCES=${SOURCES}")。确保它不为空。例如，如果 SOURCES 是通过 file(GLOB ...) 设置的，请验证 glob 模式与文件匹配。
   ```
2. ```
   在 add_executable 中显式列出源文件：add_executable(myapp main.cpp utils.cpp)。避免使用空变量。
   ```
3. ```
   如果使用宏或函数，请确保正确传递参数：function(my_add_executable name) add_executable(${name} ${ARGN}) endfunction()。调用时至少提供一个源文件。
   ```

## 无效尝试

- **Adding a dummy source file like 'main.cpp' without checking if it exists** — If the file does not exist, CMake will later fail with 'Cannot find source file'. The root cause (empty variable) remains unaddressed. (80% 失败率)
- **Removing the add_executable call entirely and relying on add_library** — The project needs an executable target; removing it breaks the build logic, and the error shifts to missing target. (90% 失败率)
- **Setting CMAKE_MINIMUM_REQUIRED to a lower version** — The error is not version-dependent; it is a syntax/argument error that is caught at parse time regardless of CMake version. (95% 失败率)
