CMake'i GNU ile kullanma Make: Tam komutları nasıl görebilirim?


281

GNU Make ile CMake kullanıyorum ve tüm komutları tam olarak görmek istiyorum (örneğin, derleyicinin nasıl yürütüldüğü, tüm bayraklar vb.).

GNU markası var --debug, ancak başka seçenekler var mı? CMake, hata ayıklama amacıyla oluşturulan Makefile'da ek bayraklar sağlıyor mu?


2
Ya da, bazı arama terimleri eklemek için, Nasıl tam gizlenir, ayrıntılı yürütülen komut satırları ve sadece kısa sessiz yüzde renkli çıktı gösterir.
ulidtko


mkdir build; cd build; cmake .. --debug-output; make VERBOSE=1
parasrish

Yanıtlar:


369

Make VERBOSE=1komutunu çalıştırdığınızda , tam komut çıktısını görmek için ekleyin . Örneğin:

cmake .
make VERBOSE=1

Veya -DCMAKE_VERBOSE_MAKEFILE:BOOL=ONoluşturulan Makefiles'den kalıcı ayrıntılı komut çıktısı için cmake komutuna ekleyebilirsiniz .

cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .
make

Daha az ilginç olan bazı çıktıları azaltmak için aşağıdaki seçenekleri kullanabilirsiniz. Seçenek, [% 33] Bina C nesnesi ...CMAKE_RULE_MESSAGES=OFF gibi satırları kaldırırken , ve gibi satırları filtreleyen geçerli dizinin yazdırılmamasını söyler .--no-print-directorymake[1]: Entering directorymake[1]: Leaving directory

cmake -DCMAKE_RULE_MESSAGES:BOOL=OFF -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .
make --no-print-directory

12
Bu çözümler onu çok ayrıntılı hale getirir, çok fazla CMake yazdırır ve ilginç olmayan içleri yapar. Yalnızca derleme ve bağlantı komutlarını göstermenin herhangi bir yolu var mı (örneğin, hata ayıklama sorunları için genellikle neyin önemli olduğu). Belki de sadece başarısız olan komutu görüntüler.
Tronic

En iyi google hit, "yalnızca g ++ komut satırlarını görmek istiyorsanız, mümkünse - ayrıntılı Makefiles ile bağlantılı olarak grep & Co. kullanmanız gerektiğini" önerir . Belki de çok fazla cmake deneyimi olan geliştiricilerin başka tavsiyeleri vardır.
Trevor Boyd Smith

7
Bu arada, destekleyen bir platformda iseniz, cmake -GNinja . ; ninja -vminimum tüylü çok güzel bir ayrıntılı çıktı gösterir.
richq

11
Single line ...cmake --build . -- VERBOSE=1
letmaik

Görünüşe göre, daha yeni bir cmake sürümü ile çalışmalıyım, çünkü cmake çalıştırdıktan sonra derleme
dizinimde herhangi bir makyaj bulunamadı

80

CMakeLists.txtDosyadaki seçeneği şu şekilde ayarlamak uygundur :

set(CMAKE_VERBOSE_MAKEFILE ON)

3
Lütfen bunu kendi projeleriniz için yapma. Tüm kullanıcılarınız ayrıntılı derleme çıktılarınızı görmek istemeyebilir. Bunu kütüphanenizi tüketen herkese zorlamayın. CMAKE_VERBOSE_MAKEFILE hata ayıklama amacıyla varsayılan olarak kapalı olmalı ve kullanıcının istediği takdirde tercihi kapalı olmalıdır.
Ela782

3
Yani? Birden fazla geliştiriciniz varsa ve onlara bir seçenek vermek istiyorsanız bunu her zaman bir önbellek değişkeni olarak ekleyebilirsiniz. Ancak evet, bir projenin yayın sürümünde, varsayılan olarak projeyi kapatmalısınız.
James Hirschorn

1
Bu, qt.io QtCreator kullanırken harika bir seçenektir çünkü cmake GUI tarafından çağrılır. Teşekkür ederim!
Grant Rostig

9

Veya basitçe kabuk üzerinde VERBOSE ortam değişkenini şu şekilde dışa aktarın: export VERBOSE=1


8

CMake GUI'sini kullanırsanız, gelişmiş görünüme geçin ve seçeneğe CMAKE_VERBOSE_MAKEFILE adı verilir.


Bu seçeneği GUI kullanmadan metin dosyalarında nasıl ayarlayabilirim?
osgx

4

-ggdbBayrağın mevcut olmasını sağlamak için benzer bir şey deniyordum.

Temiz bir dizinde make yapmak ve aradığınız bayrağı grep. Sadece yazmaktan debugziyade arıyorum ggdb.

make VERBOSE=1 | grep debug

-ggdbBayrak sadece derleme komutları açıldı örtüyor yeterliydi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.