SORU
22 HAZİRAN 2009, PAZARTESİ


En iyi şekilde CMake içinde sourcefiles belirtmek için

Cmake, bir hedef için sourcefiles belirtmek için çeşitli yollar vardır. Örneğin: genelleme bir olur

FILE (GLOB dir/*)

Bir tane daha her dosyayı tek tek belirtmek için, ve bunu yapmak için daha fazla yolu vardır sanırım.

Hangi yol en iyisi bu mu? İyi gibi, dezavantajları daha fazla avantajları.

Genelleme kolay görünüyor, ama bazı olumsuzlukları olduğunu duydum. Hangisi olduğunu hatırlamıyorum.

CEVAP
29 HAZİRAN 2009, PAZARTESİ


Tam açıklama: genelleştirme yaklaşımı tercih ederim.

Olan genelleştirme için avantajları:

  • Kolay olarak yeni bir dosya eklemek için. sadece tek bir yerde sıralanmıştır: disk. Değil genelleme oluşturur çoğaltılması.

  • Cmakelists.txt dosyanız olacak daha kısa. Bu size büyük bir artı. bir sürü dosya var. Değil genelleme sen CMake mantığı kaybetmenize neden olur dosyaların büyük listeleri arasında.

Kullanmanın avantajları dosya listesi kodlanmış:

  • CMake eğer kullanırsak disk üzerinde yeni bir dosya bağımlılıkları doğru takip edecek topak sonra çalıştırdığınızda ilk seferde globbed dosyaları CMake almazsınız aldı

  • Yalnızca istediğiniz dosyaları eklenir emin olun. Genelleme başıboş teslim alabilirsiniz dosyaları istemediğiniz.

İlk soruna geçici bir çözüm bulmak için, basitçe "" topak yapar cmakelists.txt hiçbir değişiklik ile dosya yazarak touch komutunu kullanarak ya da. dokunabilirsin Bu cmake yeniden çalıştırın ve yeni bir dosya almaya zorlar.

Muhtemelen ne olduğu kodunuzu dikkatle dizinlere düzenleyebilirsiniz ikinci sorunu çözmek için. En kötü durumda, bir liste(REMOVE_İTEM) komut dosyaları globbed listesini temizlemek için kullanabilirsiniz:

file(GLOB to_remove file_to_remove.cpp)
list(REMOVE_ITEM list ${to_remove})

Bu ısırık tek gerçek durum varsa git-bisect gibi bir şey aynı kod eski sürümleri inşa dizini denemek için kullanıyorsanız. Bu durumda, gereğinden fazla listesinde doğru dosyaları almak sağlamak için temiz derlemek zorunda kalabilirsiniz. Bu köşede böyle bir durumda, ve zaten gerçekten bir sorun değil mi bu parmaklarının ucunda, biridir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • campos9896

    campos9896

    24 Mart 2012
  • Samantha Crain

    Samantha Cra

    30 EKİM 2008
  • Troy Hunt

    Troy Hunt

    29 EYLÜL 2011