Przygotowaliśmy projekt cmake z zewnętrznymi zależnościami bibliotek współdzielonych. Chcemy spakować pliki binarne i zależności naszego projektu za pomocą CPack. Jednak przy próbie znalezienia zależności od naszych celów uzyskujemy różne wyniki w systemach Windows i Linux.Jak korzystać z funkcji cmake get_prerecenzje i get_filename_component dla instalacji zależności docelowej?
Przejrzeliśmy moduł GetPrerequisites CMake (2.8.12). Pomyślnie użyliśmy następującego kodu CMake, aby uzyskać pełną ścieżkę zależności CMake target (BINARY) (_libFile) na Linuksie, jednak nie nie dostanie pełnej ścieżki zależności w oknach. W systemie Windows zmienna dependency_realpath zawiera coś w rodzaju $ {CMAKE_SOURCE_DIR}/DEPENDENCY_FILE, która nie jest poprawną ścieżką do zależności.
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)
Pytanie brzmiało: Dlaczego otrzymujemy różne wyniki dla lokalizacji zależności w systemie Windows i systemie Linux?
Jakie wyniki uzyskujesz? Jakich wyników oczekujesz? Chciałbym zobaczyć wyjście pętli "foreach (d $ {DEPENDENCIES}) message (" d = '$ {d}' ") endforeach()" Nie powinno być potrzeby wykonywania REALPATH, wyniki get_prerecenzites powinny już są pełne ścieżki ... – DLRdave
Wydrukowałem wynik jednego z moich celów. Wydaje się, że lista zawiera tylko nazwy plików, a nie pełne ścieżki: 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 = 'vtkRendering.dll' – tisch
Czy może to być związane z DUMPBIN, który jest gp_cmd? – tisch