Czy istnieje zmienna, której można używać w cmake, aby działał tak, jakby został przekazany jako opcja -q? Byłoby miło, ponieważ mam bardzo modularną konstrukcję, która staje się nieporządna w wynikach cmakes. Używam go w projekcie C++.powiedz cmake, aby był cichy
Odpowiedz
Nie ma żadnej zmiennej, którą znam. Jednakże, można dodać następujące siekać na początku swojego najwyższego poziomu CMakeLists.txt (przed wywołaniem project
) do sterowania wyjściem nieco:
function(message)
list(GET ARGV 0 MessageType)
if(MessageType STREQUAL FATAL_ERROR OR
MessageType STREQUAL SEND_ERROR OR
MessageType STREQUAL WARNING OR
MessageType STREQUAL AUTHOR_WARNING)
list(REMOVE_AT ARGV 0)
_message(${MessageType} "${ARGV}")
endif()
endfunction()
nadpisuje ten CUpewnij wbudowanego polecenia message
i tłumi wszelkie STATUS
i wiadomości bez typu, pozostawiając ważniejsze typy do prawidłowego wyprowadzania.
Dane wyjściowe np. komunikat WARNING
zmieni się z
CMake Warning at CMakeLists.txt:14 (message): This is a dummy warning message.
do
CMake Warning at CMakeLists.txt:8 (_message): This is a dummy warning message. Call Stack (most recent call first): CMakeLists.txt:14 (message)
pamiętać, że rzeczywiste linii, gdzie komunikat został wygenerowany jest wymieniony w stos wywołań zamiast bycia pierwszy wiersz komunikatu wyjściowego.
Ostatecznie nie ma to wpływu na dane wyjściowe podsumowania, które wskazuje na powodzenie lub niepowodzenie próby konfiguracji.
Od wersji cmake 3.1 bardzo przydatne jest ustawienie CMAKE_INSTALL_MESSAGE
. Na przykład set(CMAKE_INSTALL_MESSAGE LAZY)
pominie komunikaty -- Up-to-date:
.
Super! Więc mógłbyś zrobić dowolny rodzaj wiadomości, którą chciałeś, co? – alexmherrmann
Czy istnieje sposób na zatrzymanie tego stosu wywołań? Dziękuję za odpowiedź! – alexmherrmann
@alexhairyman Niezupełnie, ale potrzebujesz go do śledzenia rzeczywistego źródła błędu/ostrzeżenia. Jeśli nie chcesz widzieć nawet błędów/ostrzeżeń, zawsze możesz odciąć wszystko wewnątrz ciała 'function', aby' message' stał się no-op. Lub po prostu pozostaw błędy w "if" i ignoruj ostrzeżenia. – Fraser