2017-05-10 1 views
6

Ich habe vor kurzem mein Projekt auf CMake aktualisiert, eine Sache ist nervig. Beim Erstellen von Quelldateien wird das Verzeichnis ausgegeben, in dem die Objektdateien gespeichert werden.CMake, nicht drucken Verzeichnis beim Kompilieren

[ 13%] Building CXX object a/CMakeFiles/a.dir/src/A.cpp.o 
[ 14%] Building CXX object b/CMakeFiles/b.dir/src/B.cpp.o 
[ 15%] Building CXX object c/CMakeFiles/c.dir/src/C.cpp.o 

ich möchte es machen wie diese

[ 13%] Building CXX object A.cpp.o 
[ 14%] Building CXX object B.cpp.o 
[ 15%] Building CXX object C.cpp.o 

ich nichts darüber finden.

+1

AFAIK das Stück Code, das [hier] druckt ist (https://gitlab.kitware.com/cmake/cmake/blob/v3.8.1/Source /cmNinjaTargetGenerator.cxx#L666), Zeile ist 'description <<" Building "<< lang <<" object $ out ";' und es scheint '$ out' ist der relative Pfad für das Objekt, der dann an gcc unmodified übergeben wird . Also erwarte ich nicht, eine Konfigurationsoption dafür zu finden. Suchen Sie nach einer Art Filter, der (in Ihrem Terminal) angewendet werden soll, um die Ausgabe auszugeben? –

+1

Siehe http://stackoverflow.com/questions/9765547/how-to-customize-cmake-output – sakra

Antwort

2

Als @Hugues Moreau commented sind diese Texte direkt in CMake kodiert und können nicht verändert werden.

Sie könnte - ohne ein anderes Skript unter Verwendung der Befehlszeile oder Ausgabe Parsen - nur die Ausgabe unterdrückt mit der Einstellung globale RULE_MESSAGES Eigenschaft OFF und Ihr eigenes echo Gespräch hinzugefügt.

HINWEIS:

  1. Es lässt den Prozentsatz und Farbinformationen auch
  2. Es funktioniert nur für Makefiles generators

CMakeLists.txt

cmake_minimum_required(VERSION 2.8) 

project(HelloWorld) 

if(CMAKE_GENERATOR MATCHES "Makefiles") 
    set_property(GLOBAL PROPERTY RULE_MESSAGES OFF) 
    set(
     CMAKE_CXX_COMPILE_OBJECT 
     "$(CMAKE_COMMAND) -E echo Building <LANGUAGE> object $(@F)" 
     "${CMAKE_CXX_COMPILE_OBJECT}" 
    ) 
endif()  

add_executable(HelloWorld main.cpp) 

Referenzen

Verwandte Themen