Kaynak İçi Derleme ve Kaynak Dışı Derleme


10

Benim (öncelikle C ++) geliştirme, ben uzun kaynak dışı yapıları kullanmaya bağlı kalmış. Yani, kaynağım genellikle bir /project/srcdizinde oturuyor ve derlemeler a /project/build/bin/release, /project/build/bin/debugdizinlerinde yaşıyor . Bunu yaptım çünkü kaynak dizinlerimi ara dosyalardan temiz tutuyor, tüm ikili dosyalarım için bir konumum var, paketleme daha kolay, temizlik daha kolay ve sürüm kontrolü daha kolay. (Bir şey mi kaçırdım?)

Şimdi kaynak yapıları kullanan (büyük) bir projeyi miras alıyorum. Bu tip yapı için motivasyon nedir ve avantajları nelerdir? (En çok kişisel tercih türlerine göre mühendislik düzeyindeki nedenlerle ilgileniyorum.)

Lakos'un "Büyük Ölçekli C ++ Yazılım Tasarımı" nın bu konuya ağırlık vereceğini umuyordum, ama eğer özledim.


2
Özür. Ben "kaynak yapıları geliştirmek 'x' geliştirmek" veya "onlar 'y' sağlamak için yardımcı" veya "otomatik testler sonra 'z'" için arıyorum. Bir rant değil. Özellikle burada bir fikir savaşına girmek istemiyorum!
DiB

10
Kaynak içi yapılar, selefinizin tembelliğine borçlu olduğunuz bir lanettir. Her şey için (kaynak kontrolü, çapraz yapı, metin bulma, vb.) Korkunçlar, ancak çıplak makyaj malzemeleri kullanarak oluşturmak inanılmaz derecede kolay. Üzgünüm, bu bir ranttı. Ama nesnel olan.

1
"Kaynak içi" derlemelerle tam olarak ne demek istiyorsun? Gibi bir şey /project/src/bin/release, veya gerçekten tüm ara ve çıktı dosyaları /project/src? Bir düzineden fazla kaynak dosya varsa, ikincisi gerçekten bir karışıklık olabilir, birincisi tamam.
Doc Brown

2
@Tibo, sadece makyaj malzemeleri ile inanılmaz derecede kolay değil, aynı zamanda çoğu IDE ile de varsayılan gibi görünüyor (en azından birkaç yıl önce kontrol ettiğimde).
Bart van Ingen Schenau

4
@BartvanIngenSchenau Gerçekten mi? bu durumda hangi IDE'yi kullanıyorsunuz? Qt bunu yapmıyor, aslında yapıyı olabildiğince uzağa koyuyor gibi görünüyor, Eclipse bunu yapmıyor, Clion'un bunu yaptığını iddia edebilirsiniz, ancak sadece main.cpp başlangıçta projenizin en üst seviyesinde olmakla birlikte, o üst düzeyde kaynağınızdan uzakta ayrı bir cmake oluşturma dizini oluşturur. Bu konuda da MSVS'nin Clion'a benzediğine inanıyorum.
whn

Yanıtlar:


9

Buradaki topluluğa sorduktan ve İnternet'te aramaya devam ettikten sonra, kaynak içi yapıları kullanmak için önemli mühendislik gerekçeleri bulamadım. (Onlardan kaçınmanın birçok nedeni vardır.)

Bulduğum tek nesnel neden (@BartvanIngenSchenau tarafından yapılan yorumda belirtildiği gibi), kaynak içi yapıların bazen bir yapı sistemi tarafından varsayılan olarak ayarlanmış olmasıdır. Bu varsayılan ayar nedeniyle, kurulum zamanında ek yük gerektirmezler, bu da çok küçük (veya çizik) bir proje için mükemmel bir şekilde kabul edilebilir.

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.