2011-05-11 14 views
6

Programımın çalışması için birkaç DLL'ye ihtiyacı olduğunu varsayalım. Bu DLL'leri dağıtımımdaki kullanıcıya vermeliyim. Şimdilik, QtCore4.DLL, QtGui4.DLL, msvcp90.DLL, msvcr90.DLL, mylib.DLL, Kernel32.DLL ...CMake: bir yürütülebilir dosya için gereken tüm .DLL/.SO dosyaları nasıl belirlenir?

CMake DLL'lerin tam listesini (veya .SO) alabilir miyim Dosyalar. Sonra bu listeden "Kernel32.DLL" gibi öğeleri kaldırmak ve DLL'leri dağıtımım için kopyalayın.

Sonraki yapının Visual Studio'nun aynı sürümünde, "C: \ Program Files \ Microsoft Visual Studio 9.0 \ VC \ redist \ x86 \ Microsoft gibi sabit kodlama yolları üzerinde gerçekleştirileceğini garanti edemem. VC90.CRT "veya" E: \ Qt \ 4.6.3 "DLL'leri aramak için iyi değil.

Teşekkür ederiz!

cevap

1

Pencerelerde Dependency Walker kullanabilirsiniz (veya görsel stüdyondan cmd satırlı dumpbin aracı). Ancak bu gerçekten bir CMake çözümü değildir ve Cmake ile gerçekten standart bir çözüm yoktur.

Sistem dll'lerini (msvc [r | p] 90.dll ile mingw ile mingw10.dll) almak için kullanabileceğiniz InstallRequiredSystemLibraries modül var.

1

Andre tarafından önerildiği gibi, doğru C/C++ çalışma zamanını bulmak/kurmak için InstallRequiredSystemLibraries vardır. Uygulamanızın, kitaplığınızın ve/veya eklentilerinizin diğer bağımlılıklarını bulmak için kullanılabilecek BundleUtilities da vardır.

Çalışma zamanı yüklenmiş eklentiler gibi hiçbir şeyi seçemezsiniz, ancak bunları kullanmanız gereken kitaplık dizinleriyle birlikte ekleyebilirsiniz. CMake'in en yeni sürümlerinde, BundleUtilities'i tüm platformlarda daha güvenilir hale getirmek için birkaç iyileştirme yapılmıştır.

İlgili konular