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

如何在CMake的add_executable中使用非ASCII字符

解决方案

你遇到的报错是CMake默认对目标名的字符限制导致的,有两种可行方案:

方案1:启用CMake非ASCII目标名政策(要求CMake >= 3.21)

CMake 3.21版本引入了政策CMP0143,开启后允许使用UTF-8编码的非ASCII字符作为目标名,配置方法如下:

  1. 在CMakeLists.txt的最开头、project指令之前添加如下配置:
cmake_minimum_required(VERSION 3.21)
cmake_policy(SET CMP0143 NEW)
# 下面再写你的project、add_executable等逻辑
project(MyProject)
add_executable(❤ test.cpp)
  1. 注意事项:
  • 确保你的CMakeLists.txt文件使用UTF-8编码保存,避免字符解析乱码
  • 部分旧构建生成器(比如非常老版本的Visual Studio项目生成器)可能仍存在兼容性问题

方案2:使用ASCII目标名+自定义输出名(兼容性最优,无CMake版本要求)

如果需要兼容低版本CMake,不需要修改政策,只需把目标名设为ASCII字符,再通过OUTPUT_NAME属性指定生成的可执行文件名为非ASCII字符即可:

# 目标名使用ASCII,不会触发报错
add_executable(test_target test.cpp)
# 设置最终生成的可执行文件名为你需要的非ASCII字符
set_target_properties(test_target PROPERTIES OUTPUT_NAME "❤")

这种方式避开了CMake对目标名的字符限制,同时能得到你想要的非ASCII名称的可执行文件,适配所有CMake版本,跨平台兼容性也更好。

补充说明

就算开启了非ASCII目标名支持,也要注意你所用的操作系统、编译器对可执行文件名的字符限制:比如Windows系统不允许文件名包含/\:*?"<>|等特殊字符,部分字符即便CMake允许,系统也会拒绝创建对应文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:39:01