2014-09-22 21 views
7

Çapraz platform uygulaması yazıyorum. Bir sürüm, ikinci olarak - Windows Phone'da Win32 altında çalışacaktır.Visual Studio'da projeler arasında C++ kaynak kodu dosyaları nasıl paylaşılır?

C++ çekirdeğimi yeniden kullanmak istiyorum - özellikle platform bağımlılıkları yok, sadece STL. Bunu yapmak için, aynı kaynak dosyaları iki projede kullanmak istiyorum: statik Win32 kitaplığı (.lib) ve Windows Phone Bileşeni (C++/CLI).

Bu iki projeyi tam olarak aynı kaynak ve üstbilgi dosyalarını kullanacak biçimde nasıl yapılandırabilirim?


Tamam, bir örnek verelim. Projeyi olduğunu diyelim:

MyApp.Library [win32 lib] 
    myClass.cpp 
    myClass.h 

Bu kütüphane Win32 uygulaması dosyayı .dll için derlenmiş ve daha sonra içe:

win32'de yana
MyApp.Win32App [win32 C#] 

ikili düzeyde pencereler telefon ile uyumlu değildir Bu kütüphaneyi doğrudan kullanamıyorum. Ancak Kütüphane sadece STL kullanıyor olduğundan, Windows Phone Bileşeni oluşturabilir, tüm kaynaklarını buraya ekleyebilir ve yapılandırabilirim.

MyApp.Component [WinPhone component] 
    myClass.cpp 
    myClass.h 

Bu iki dosyanın Kütüphane'de kullanılanlarla tam olarak aynı olmasını istiyorum. Bu etkiyi elde etmek için projeyi nasıl düzenlemeliyim?

+0

Reddetmeyle ilgili yorum yapmak ister misiniz? – Spook

+0

Bir uygulamada ana uygulama (lar) ve kütüphaneye sahip olmak ve hepsine uygun yapı yapılandırmaları var mı? –

+1

Downvoter değilim, ama problemi burada görmek gerçekten zor. –

cevap

4

Ortak bir konumdan kaynak kodunu birden çok projeye ekleyebilirsiniz. Bunu çok yaparım; Benim proje dosyalarımın çoğu gibi dizin hiyerarşisinde aynı düzeyde olan ortak bir dizinde kod var. Bu, ortak dizinden .h ve .cpp dosyalarını çeşitli projelerinize eklemektir.

Genel kaynak için bir ağ sürücüsü kullanıyorsanız VisualStudio'nun biraz huysuz ve zor olduğunu fark ettim, bu yüzden bunu yapmıyorum. Ancak tüm kaynak kodunuz yerel disklerde olduğu ve IDE'nin onları nerede bulacağını bildiği sürece, çok sayıda projede aynı kaynak dosyasına sahip olmanın bir sorunu yoktur.

+0

Yani bir anlamda gerçekten sorunu çözmek değil - aynı dosyanın mutiple örneklerini olmadıkça senin çözümün - kendi lib libre içine paylaşılan koyarak, onlara nispi ekleyerek gerçekten hiçbir yolu yoktur ??? – serup

+1

@serup Farklı kaynaklardaki farklı projelerin aynı kaynak dosyasına başvurması için kaynak dosyanın birden fazla örneğini almaz. Önceki yanıtımı değiştirdim: VisualStudio, ağ sürücülerindeki kaynakları referans alan bir projeyle tamam. Ağ sürücülerindeki proje dosyalarıyla mutsuz olur. Aynı yerel ağda birkaç makinede geliştiriyorum ve projelerimin birçoğu bir ağ sürücüsündeki homespun sınıf kütüphanemden sınıfları içeriyor. – Logicrat

+0

evet Benim için çalışan basit bir çözüm buldum - cevabımı görebiliyorsunuz – serup

0

tek yönlü tüm .hpp ve .cpp dosyalarını ayrı bir klasöre koymaktır - buna "Paylaşılan" olarak adlandırın. Daha sonra, çözüm yapılandırma özelliğinizin içine ek bir Dizin ekleyin, bu dizinin göreceli bir yol olması gerekir.

Sonra projeniz

NB içine paylaşılan klasörden SADECE .cpp dosyaları göreli ekleyin! Paylaşılan klasördeki .cpp dosyalarınızın içine "stdafx.h" ifadesini eklediyseniz, bunları dışa aktarın.

+1

Paylaşılan '.cpp' dosyalarının birçoğu' 'stdafx.h '' içeriyor. Her proje dosyasının kendi yerel stdafx kopyası vardır. Bazı durumlarda, proje dizinini içerecek dizinler listesinin altına eklemeliyim, ancak bu, önceden derlenmiş başlıkların işlevselliğini korumamı sağlıyor. – Logicrat

+0

@Logicrat'ın yalnızca uyuşmazlıklarla ilgili sorunları vardı - önceden derlenmiş üstbilgileri KULLANMAMASI için en uygun projeyi ayarlamak zorunda kaldı – serup

İlgili konular