Bazı büyük makefile tabanlı uygulamaları CMake'e dönüştürmek için üzerlerinde CLion kullanmak istiyorum.Büyük CMake Proje yüklemesi yavaş çalışıyor CLion
Projeyi her açışımda, CMion projesini yüklemek için CLion saatte bir saat alıyor, bellek göstergesi ise "1987 MB'nin 750" altında kalıyor. Ben bir CMake newbie olduğumu itiraf ediyorum, bu yüzden benim CMakeLists.txt dosyalarım optimal değildir.
Temel olarak her uygulamanın kendi dizininde belirli bir kaynak kodu vardır ve birkaç 'ortak' kitaplık kullanmaktadır. Github üzerinde paylaşım için yapısal olarak eşdeğer bir proje yaptık: O projede
https://github.com/pe-st/zalophus/tree/master/tree
bir uygulama 'a' ve iki ortak Librairies 'atlas' ve 'tebrik' yoktur. Her kütüphane Googletest testleri ile bir 'test' klasörü içerir.
+ common
| + atlas
| | + test
| + greeting
| + test
+ a
Gerçekte hepsi Boost ve standart kütüphane, başka bir şey kullanarak, toplamda yaklaşık 1500 .cpp ve .hpp dosyaları ile ortak altında bir düzine kütüphaneleri hakkında bulunmaktadır.
Github üzerindeki projenin ana dalı, tüm dizinlerin 'add_subdirectory' kullanılarak başvurulan ilk denememi içerir. İkinci giriş (with_ext dalında) bağımlı kütüphaneler için ExternalProject_Add kullanıyor. Testleri "selamlama" dan derlediğimde/çalıştırdığımda, 'atlas' bağımlılığını da doğru şekilde derler. Ancak aynı zamanda 'atlas' testlerini derlemeye/çalıştırmaya çalışır (ki bu da başarısız olur ...) ve test yapmadan 'atlas'ı nasıl derleyeceğimi bilemedim.
CMake projesini, gösterildiği gibi kaynak kod tabanıyla çalışmak üzere nasıl daha iyi tasarlamalıyım?
(Not: Ben JetBrains CLION forumda da aynı soruyu sordum: https://intellij-support.jetbrains.com/hc/en-us/community/posts/207559245-Large-CMake-Project-loading-is-slow-in-CLion-)
Bunu hiç anlamadım, ama haklısınız. Projeyi arka arkaya iki kez yüklersek, ikinci kez daha hızlı (ilk kez: CMake üretimi 935s, bina sembolleri 270s; ikinci kez: CMake üretimi 49s, bina sembolleri 177s). Sembolün ikinci kez yüklenmesi daha fazla önbelleğe sahip olsaydı çok güzel olurdu ... Ama bir sorun olmaya devam ediyor: kütüphanelerin kaynak kodu sık sık değiştiği için, önbellekleme çok fazla yardımcı olmaz. Dizinleri kütüphaneler olarak işaretlemeye devam edeceğim. – pesche