【问题标题】:Cmake: how to force it to use colormake?Cmake:如何强制它使用colormake?
【发布时间】:2017-07-10 14:03:54
【问题描述】:

为了使用 colormake,我确实在我的 .bashrc 中设置了这个别名

alias make="/usr/bin/colormake"

它可以工作,就好像我尝试编译(使用 qmake)一个带有错误的简单 C++ 示例代码(只是一个带有 cout 的 main.cpp),它们的颜色是正确的。

但是,如果我用 cmake 编译相同的代码,则不会使用 colormake。我该怎么做才能强制 cmake 使用它?

我的最小 CMakeList.txt 示例是

CMAKE_MINIMUM_REQUIRED(VERSION 3.0.2)
ADD_DEFINITIONS(-std=c++11)
ADD_EXECUTABLE(exe main.cpp)

系统:Debian 8.8 jessie

谢谢,瓦莱里奥

更新:

我用这种方式修改了CMakeLists.txt,但没有成功:

CMAKE_MINIMUM_REQUIRED(VERSION 3.0.2)
ADD_DEFINITIONS(-std=c++11)
set(CMAKE_MAKE_PROGRAM /usr/bin/colormake)
ADD_EXECUTABLE(exe main.cpp)
message("CMAKE_MAKE_PROGRAM: " ${CMAKE_MAKE_PROGRAM})

更新 2:

我是这样修改CMakeList的:

CMAKE_MINIMUM_REQUIRED(VERSION 3.0.2)
ADD_DEFINITIONS(-std=c++11)
#set(CMAKE_COLOR_MAKEFILE OFF)
#set(CMAKE_MAKE_PROGRAM /usr/bin/colormake)
ADD_EXECUTABLE(exe main.cpp)
message("CMAKE_MAKE_PROGRAM: " ${CMAKE_MAKE_PROGRAM})
message("CMAKE_COLOR_MAKEFILE: " ${CMAKE_COLOR_MAKEFILE})

然后从命令行使用此参数启动 cmake:

cmake -DCMAKE_MAKE_PROGRAM=/usr/bin/colormake -DCMAKE_COLOR_MAKEFILE=OFF ../

但同样,make 后的 main.cpp 语法错误没有着色。 这是cmake的输出,注意CMAKE_MAKE_PROGRAM和CMAKE_COLOR_MAKEFILE的信息

-- The C compiler identification is GNU 4.9.2
-- The CXX compiler identification is GNU 4.9.2
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
CMAKE_MAKE_PROGRAM: /usr/bin/colormake
CMAKE_COLOR_MAKEFILE: OFF
-- Configuring done
-- Generating done
-- Build files have been written to: /home/valeriosperati/Desktop/VALERIO_SPERATI/prova_codice_c/colormake/cmake/build

一些额外的(可能有帮助的)信息:这是输出 我在用 qmake 编译时得到,错误“hjskf”是红色的。

这是用cmake编译时的输出:

【问题讨论】:

  • 有同样的问题,我还没有解决方案。

标签: cmake


【解决方案1】:

CMAKE_MAKE_PROGRAM 缓存变量设置为指向您要使用的构建工具就足够了。您可以通过运行 cmake-D 选项来做到这一点,如下所示:

cmake -DCMAKE_MAKE_PROGRAM=/usr/bin/colormake path/to/src

为了他人的利益,这种技术也可以与其他生成器一起使用,而不仅仅是make。请注意,确保指定的构建工具与 CMake 正在使用的生成器类型匹配是您的责任(即,如果您告诉 CMake 将 Ninja 与 -G Ninja 一起使用,请不要传递 make 工具)。

但是,请注意,这只有在您像这样通过 CMake 调用构建时才真正重要:

cmake --build path/to/build/dir

某些 IDE 工具可能会以这种方式调用构建。然而,大多数时候,开发人员直接调用该工具。在您的情况下,您可以简单地调用colormake 而不是make。如果您在这样做之后仍然没有得到彩色输出,那么您的问题一定出在其他地方(也许检查您的终端类型设置)。

【讨论】:

  • 好吧,我试过了,但没有成功:我在我的 CMakelists.txt 中添加了行:set(CMAKE_MAKE_PROGRAM /usr/bin/colormake) 但 make 输出仍然是一样的,没有颜色!
  • 从 cmake 命令行而不是在 CMakeLists.txt 中设置它
  • 没有成功!请参阅更新 2。注意我尝试使用和不使用 -DCMAKE_COLOR_MAKEFILE=OFF,因为我怀疑 cmake 使用自己的输出着色系统:CmakeFiles 错误实际上是浅蓝色,而我的语法错误仍然是灰色(colormake 应该将其着色红色)!
  • 我假设您是从命令行而不是 IDE 执行所有这些操作。运行cmake 后如何启动构建?基本上有两种选择:直接调用构建工具,在这种情况下,您可以保证自己使用 colormake,或者使用cmake --build,在这种情况下,将使用CMAKE_MAKE_PROGRAM(我使用 Ninja build 在它所在的机器上执行此操作)不在 PATH 上)。
  • 我在构建文件夹中从命令行运行cmake(源main.cpp和CmakeList.txt在父文件夹中。我也尝试使用cmake-gui,但结果是一样的。关于“启动构建”我不确定我是否理解:这是什么意思?我通常运行 cmake(和参数)然后 make,仅此而已。我错过了什么吗?
猜你喜欢
  • 1970-01-01
  • 2016-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-05
  • 2018-07-27
  • 1970-01-01
  • 2019-08-15
相关资源
最近更新 更多