You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMakeLists构建提示成功但未生成目标可执行文件exeName咨询

解决CMake生成可执行文件后找不到的问题

这种情况我碰到过好几次,大概率是可执行文件的输出路径没找对,而不是CMake脚本本身有问题。下面给你一步步排查的方法:

1. 先确认你的构建目录

CMake推荐用「out-of-source构建」(单独建一个build文件夹存放编译产物),如果你是这么操作的:

  • 在源码目录下创建build文件夹,执行cd build,再运行cmake ..和make
  • 那可执行文件exeName应该就在build目录根目录下(没额外设置输出路径的话)

要是你直接在源码目录执行cmake .和make(不推荐的in-source构建),exe会直接出现在源码目录里,但这种方式会把编译文件混在源码中,建议以后改用out-of-source构建。

2. 检查CMakeLists.txt里的输出路径配置

看看脚本里有没有设置过以下变量,它们会改变可执行文件的输出位置:

  • CMAKE_RUNTIME_OUTPUT_DIRECTORY:全局设置所有可执行文件的输出目录
  • EXECUTABLE_OUTPUT_PATH:针对单个可执行目标的输出路径

比如如果有这样的代码:

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)

那exe会被放到build/bin目录下;如果是:

set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/output)

那exe会出现在源码目录的output文件夹里。

3. 从make的输出里找路径

重新执行一次make,仔细看终端的输出内容,尤其是最后几行的链接步骤。比如你会看到类似这样的行:

Linking C executable exeName

或者如果有指定路径的话会显示:

Linking C executable bin/exeName

这里的路径就是可执行文件的准确位置。

4. 检查是否需要执行安装步骤

如果你的CMakeLists.txt里写了install相关命令,比如:

install(TARGETS exeName DESTINATION bin)

那默认情况下make只会把exe生成在构建目录里,你需要额外执行make install才能把它复制到安装路径(默认是/usr/local/bin,或者你cmake时通过-DCMAKE_INSTALL_PREFIX指定了其他路径)。

另外,给你一个包含.c和.asm文件的标准CMakeLists.txt示例参考:

cmake_minimum_required(VERSION 3.10)
project(MyExeProject)

# 启用汇编语言支持,确保CMake能处理.asm文件
enable_language(ASM)

# 添加可执行目标,列出所有要编译的.c和.asm文件
add_executable(exeName
    main.c
    utils.c
    core.asm
    helper.asm
)

# 可选:设置输出到源码目录的bin文件夹,方便查找
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)

内容的提问来源于stack exchange,提问作者Kennedy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:14:39