Dış paylaşılan kütüphane bağımlılıklarına sahip bir cmake projesi oluşturduk. CPack'i kullanarak projemizin ikili ve bağımlılıklarını paketlemek istiyoruz. Ancak hedeflerimizin bağımlılıklarını bulmaya çalışırken windows ve linux sistemlerinde farklı sonuçlar alıyoruz.cmake işlevlerinin get_prerequisites ve hedef bağımlılık yüklemesi için get_filename_component nasıl kullanılır?
CMake GetPrerequisites Modülüne (2.8.12) bir göz attık. Linux üzerinde CMake hedef (BINARY) bağımlılığının (_libFile) tam yolunu almak için aşağıdaki CMake kodunu başarıyla kullandık. Pencerelere bağımlılığın tam yolunu bul. Windows'ta, dependency_realpath değişkeni, bağımlılığın doğru yolu olmayan $ {CMAKE_SOURCE_DIR}/DEPENDENCY_FILE gibi bir şeye sahiptir.
string(TOUPPER "${CMAKE_BUILD_TYPE}" CONFIG)
GET_TARGET_PROPERTY(MY_BINARY_LOCATION ${BINARY} LOCATION_${CONFIG})
GET_PREREQUISITES(${MY_BINARY_LOCATION} DEPENDENCIES 0 0 "" "")
foreach(DEPENDENCY_FILE ${DEPENDENCIES})
get_filename_component(dependency_realpath ${DEPENDENCY_FILE} REALPATH)
Yani soru olacaktır: Neden windows ve linux üzerinde bağımlılık yerler için farklı sonuçlar alıyoruz?
Gerçekte hangi sonuçları alıyorsunuz? Ne sonuçları bekliyorsunuz? Döngünün çıktısını görmek istiyorum "foreach (d $ {DEPENDENCIES}) mesajı (" d = '$ {d}' ") endforeach()" REALPATH yapmaya gerek yok, get_prerequisites'in sonuçları Zaten dolu yollar olsun ... – DLRdave
Hedeflerimden birinin sonucunu yazdırdım. Bu liste sadece dosya değil, tam yolları içeriyor görünüyor: d = 'ITKCommon-4.4.dll' d = 'kernel32.dll' d = 'MSVCP100.dll' d = 'MSVCR100.dll' d = 'rpcrt4.dll' d = 'VCOMP100.DLL' d = 'liblinear.dll' d = 'libsvm.dll' d = 'vtkCommon.dll' d = 'vtkFiltering.dll' D = 'vtkGraphics.dll' d = 'vtkHybrid.dll' d = 'vtkIO.dll' d = 'vtkImaging.dll' , d = gp_cmd olan 'vtkRendering.dll' – tisch
bu dumpbin ilişkili olabilir,? – tisch