Colors CMake在makefile中更改颜色

Colors CMake在makefile中更改颜色,colors,makefile,cmake,Colors,Makefile,Cmake,CMake生成的make文件具有丰富多彩的输出,以提高可读性 有可能改变颜色吗?我有一个绿色的终端字体,所以我有点放松了指示对象已生成的消息的颜色。我假设您所说的是从make输出添加的cmake消息(而不是正常的make输出本身)在这种情况下,这些行似乎是硬编码到生成的makefile中的,带有cmake cmake_echo_color命令的参数,该命令包含文字颜色名称作为参数。因此,似乎没有任何变量可以覆盖,或者任何类型的变量可以让你改变它 因此,不,看起来您无法控制cmake用于各种消息的

CMake生成的make文件具有丰富多彩的输出,以提高可读性


有可能改变颜色吗?我有一个绿色的终端字体,所以我有点放松了指示对象已生成的消息的颜色。

我假设您所说的是从make输出添加的cmake消息(而不是正常的make输出本身)在这种情况下,这些行似乎是硬编码到生成的makefile中的,带有cmake cmake_echo_color命令的参数,该命令包含文字颜色名称作为参数。因此,似乎没有任何变量可以覆盖,或者任何类型的变量可以让你改变它

因此,不,看起来您无法控制cmake用于各种消息的颜色。一点也不

它甚至没有从终端的termcap/terminfo中获取用于控制颜色的值。据我所知,它在源代码中有硬编码的转义序列

您唯一能做的就是更改终端的颜色定义

编辑: 在与同事讨论这一点时,我们提出了一个相当明显和简单的解决方法。创建一个cmake包装脚本,将其路径分配给
$(cmake)
变量(生成的生成行上使用的唯一变量)然后,您的包装器需要扫描
-ecmake\u echo\u color
命令序列,并将命令将要使用的任何颜色替换为您要使用的颜色的适当参数


这种方法的唯一问题是,命令行中没有任何内容指示除消息本身以外的任何类别或任何种类,因此,要以类似一致的方式执行此操作,需要进行过滤(可能是随机的)消息文本。

CMake 3.18开始提供一个名为
CCMAKE_COLORS
的变量,用于更改输出颜色。引用文件:

确定CMake curses接口使用的颜色[…]。 语法遵循与LS_颜色相同的约定;就是一个清单 由以下内容分隔的键/值对的数目:

[……]

例如:

CCMAKE_COLORS='s=39:p=220:c=207:n=196:y=46'


使用
s
字符串、
p
文件路径等等。来源:

你的假设是正确的,我说的是“CMake从make输出中添加了消息(而不是正常的make输出本身)”。谢谢你的回答,但这是悲哀的。是的,在调查这一问题的过程中,每一步都让我对cmake所做的选择更加不满。在cmake 3.18中得到了改进。最后。解决方法:别名make='make&>make.out | | cat make.out&&echo“success”@JoelKlinger您没有抓住要点。生成对象时的状态消息为绿色,几乎与我的终端颜色相同。所以很难发现这些信息。