Ich versuche eine CMake-basierte Software unter OS X (Yosemite) zu bauen, die unter Fedora 21 erfolgreich gebaut werden kann. Es benutzt eine Reihe von Bibliotheken. Beide, große offene wie Boost und einige selbstgeschriebene liegen in/installation_folder/lib. Ich benutze CMake Version 3.3.0.CMake Warnungen unter OS X: MACOSX_RPATH ist nicht für die folgenden Ziele angegeben
Nach
mkdir build
cd build
cmake .. -DCMAKE_C_COMPILER=/usr/local/Cellar/gcc/5.2.0/bin/gcc-5 -DCMAKE_CXX_COMPILER=/usr/local/Cellar/gcc/5.2.0/bin/g++-5 -DCMAKE_MODULE_PATH=${PWD}/../external/install/share/llvm/cmake
Ausführung erhalte ich die folgenden Warnungen:
CMake Warning (dev):
Policy CMP0042 is not set: MACOSX_RPATH is enabled by default. Run "cmake
--help-policy CMP0042" for policy details. Use the cmake_policy command to
set the policy and suppress this warning.
MACOSX_RPATH is not specified for the following targets:
ClangWrapper
Structure
WCETXML
This warning is for project developers. Use -Wno-dev to suppress it.
Die CMakeLists.txt enthält die folgenden Zeilen in Bezug auf RPATH:
SET(CMAKE_SKIP_BUILD_RPATH FALSE)
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir)
IF("${isSystemDir}" STREQUAL "-1")
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
ENDIF("${isSystemDir}" STREQUAL "-1")
Alles, was ich sagen kann, ist, dass ${CMAKE_INSTALL_PREFIX}/lib
ist in der Tat der richtige Pfad, und dass andere Bibliotheken wie Bo Ost sind richtig gefunden.
Das Ignorieren der Warnungen und Fortsetzen von "make" im Build-Verzeichnis führt zu einem Verknüpfungsfehler.
Ich las die CMake Wiki RPATH handling article, aber ich bin immer noch nicht in der Lage zwischen diesen Pfadvariablen und deren korrekte Anwendung auf OS X.
Unsere CMakeLists.txt wurde während der Entwicklung nur unter Linux erstellt. Vielleicht verursacht eine andere Option die Warnung. Ich bin nicht sicher. – fotinsky
Verwenden Sie keine RPATHs. Sie führen dazu, dass die resultierende Binärdatei eine Sicherheitsüberprüfung nicht besteht. Verwenden Sie stattdessen '-install_name' und' install_name_tool'. – jww