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

其他格式: JSON · Markdown 中文 · English
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.

generic

官方文档

https://cmake.org/cmake/help/latest/command/add_executable.html

解决方案

  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()。调用时至少提供一个源文件。

无效尝试

常见但无效的做法:

  1. 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.

  2. 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.

  3. 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.