Cmake:如何强制它使用colormake?

时间:2017-07-10 14:03:55

标签: cmake

为了使用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

谢谢,Valerio

更新

我以这种方式修改了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 synthax错误没有着色。 这是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'为红色。

coloured output if using qmake

这是与cmake进行通信时的输出:

output if using cmake

1 个答案:

答案 0 :(得分:0)

CMAKE_MAKE_PROGRAM缓存变量设置为指向您要使用的构建工具应该足够了。您可以通过使用cmake选项运行-D来执行此操作,如下所示:

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

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

但是,请注意,只有通过CMake调用构建才真正重要:

cmake --build path/to/build/dir

某些IDE工具可能会以这种方式调用构建。但是,大多数情况下,开发人员直接调用该工具。在您的情况下,您只需调用colormake而不是make。如果您仍然没有获得彩色输出,那么您的问题必须在其他地方(也许请检查您的终端类型设置)。