Otomatik bağımlılık yayma gibi modern özellikleri kullanmak için eski bir CMake kurulumunu yeniden yazma sürecindeyim. (örneğin, target_include_directories(<target> PUBLIC <dir>)
bunun yerine gibi şeyler kullanarak include_directories(<dir>)
) Şu anda, bir grup genel dizin özelliği ayarlayarak tüm proje bağımlılığı bilgilerini el ile işliyoruz.
Testlerimde, yeni yapıdaki bir hedefin, eski yapıdaki bir kütüphaneye bağlanacağı birkaç örnek buldum. Ben projenin en tüm özyinelemeli görünüme sahip olan bir (ler) bulmak amacıyla bu hedefin bağımlılıkları geliyor bilmeleri, açıkça kendisine bağlayan söylemiyorum ama CMakeLists.txt
ben bulana kadar bağımlılık hiyerarşisini takip etmek, s söz konusu kütüphaneyi çeken bir kitap. Düzinelerce kütüphanemiz var, bu yüzden bu önemsiz bir süreç değil.
CMake, her bir hedef için hangi bağımlılıklarının açıkça eklendiğini ve hangilerinin geçişli bağımlılıklar yoluyla yayıldığını görmenin herhangi bir yolunu sunuyor mu?
Görünüşe --graphviz
çıkış yapar bu farkı göstermek, böylece açıkça CKağıt içten bağlamı bilir. Ancak, tree
komut satırında bağımlılık bilgilerini göstermek için benzer bir komut dosyası yazmak istiyorum ve Graphviz dosyalarını ayrıştırmak hem kabus hem de kesmek gibi geliyor.
Bildiğim kadarıyla söyleyebilirim, cmake-file-api
yok değil bu bilgiyi içermektedir. codemodel/target/dependencies
Alanın işe yarayabileceğini düşündüm , ancak hem karma hem de geçişli bağımlılıkları listeliyor. Ve backtrace
her bağımlılığın alanı yalnızca geçerli hedef için add_executable
/ add_library
çağrısına geri bağlanır .
--graphiz
Seçenek sorunuza nasıl cevap vermiyor? Nokta dosyalarını ayrıştırmak neden kabus gibi geliyor? Nokta dosyaları, insan tarafından okunabilir bağlı noktaları temsil etmenin en basit, ortak ve esnek yoludur. İlegvpr
fayda Eğer awk-imsi tarzda onlarla her şeyi yapabilir ve diğer dillerde aktarabilirsiniz. Neden tam anlamıyla hedefler arasında ağaç benzeri bir bağımlılık yapısını temsil eden bir nokta dosyası, ne istediğini "görmenin" bir yolu değil?