Provo a creare un software basato su CMake in OS X (Yosemite) che può essere compilato correttamente con Fedora 21. Utilizza un mucchio di librerie. Entrambi, quelli grandi aperti come Boost e alcuni scritti da soli che si trovano in/installation_folder/lib. Io uso CMake versione 3.3.0.Avvisi CMake in OS X: MACOSX_RPATH non specificato per i seguenti target
Dopo l'esecuzione
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
ottengo le seguenti avvertenze:
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.
Il CMakeLists.txt contiene le seguenti righe riguardanti 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")
Tutto quello che posso dire è che ${CMAKE_INSTALL_PREFIX}/lib
è davvero il percorso corretto, e che altre biblioteche come Bo ost si trovano correttamente.
Ignorare gli avvisi e continuare con "make" nella directory di compilazione genera un errore di collegamento.
ho letto il CMake Wiki RPATH handling article, ma non sono ancora in grado di distinguere tra queste variabili di percorso e il loro corretto utilizzo su OS X.
Il nostro CMakeLists.txt è stato creato durante lo sviluppo solo su Linux. Forse un'altra opzione provoca l'avviso. Non sono sicuro. – fotinsky
Non usare RPATH. Faranno sì che il binario risultante fallisca un controllo di sicurezza. Invece, usa '-install_name' e' install_name_tool'. – jww