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

CMake add_custom_command在Android Studio中报错:目标未找到

解决CMake add_custom_command在Android Studio中报错"No TARGET ')' has been created"的问题

首先,你的问题根源在于add_custom_command的POST_BUILD语法使用错误,同时误用了CMake指令作为构建后命令。我们一步步拆解问题并解决:

错误原因分析

你写的代码:

add_custom_command( TARGET b.c.o POST_BUILD file(RENAME ${CMAKE_HOME_DIRECTORY}/newfolder/customer.txt ${CMAKE_HOME_DIRECTORY}/newfolder/used_customer.txt) )

有两个关键问题:

  1. 语法解析错误:add_custom_command的POST_BUILD模式要求在POST_BUILD后紧跟COMMAND关键字来指定要执行的操作,你直接写file(RENAME...)导致CMake解析混乱,把后面的括号当成了目标名称的一部分,所以报错"No TARGET ')' has been created"。
  2. 误用CMake指令:file()是CMake脚本层面的指令,不能直接作为POST_BUILD阶段的执行命令。构建后阶段需要执行的是系统命令或者CMake提供的命令行工具(通过cmake -E调用)。

修正后的代码

把file(RENAME)替换为跨平台的cmake -E rename命令,并修正add_custom_command的语法:

add_custom_command(
    TARGET b.c.o
    POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E rename
        "${CMAKE_HOME_DIRECTORY}/newfolder/customer.txt"
        "${CMAKE_HOME_DIRECTORY}/newfolder/used_customer.txt"
)

额外注意事项

  • 确认目标存在:确保b.c.o是当前CMakeLists.txt中已经定义的目标(比如通过add_executable、add_library创建的目标,或者是编译生成的目标文件),如果目标不存在,CMake依然会报错找不到目标。
  • 路径可靠性:建议检查CMAKE_HOME_DIRECTORY是否是你实际需要的路径——它指向CMake的安装目录,而非你的项目根目录。如果想引用项目根目录,应该用CMAKE_SOURCE_DIR;引用当前CMakeLists.txt所在目录则用CMAKE_CURRENT_SOURCE_DIR,避免路径错误。
  • Android Studio适配:Android Studio的CMake环境会处理跨平台路径问题,使用cmake -E rename能保证在Windows、Linux、Android NDK环境下都正常工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:30:43