我尝试在 OS X (Yosemite) 下构建一个基于 CMake 的软件,它可以在 Fedora 21 下成功构建。它使用了一堆库。两者都有,像 Boost 这样的大型开放式程序和一些位于/installation_folder/lib 中的自行编写的程序。我使用 CMake 版本 3.3.0。
执行后
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
我收到以下警告:
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.
CMakeLists.txt 包含以下有关 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")
我只能说 ${CMAKE_INSTALL_PREFIX}/lib
确实是正确的路径,并且可以正确找到其他库(如 Boost)。
忽略警告并在构建目录中继续“make”会导致链接错误。
我阅读了 CMake Wiki RPATH handling article ,但我仍然无法区分这些路径变量及其在 OS X 上的正确使用。
最佳答案
将 set(CMAKE_MACOSX_RPATH 1)
添加到 CMakeLists.txt 中,在上述书面语句之前,让警告消失。执行 make
后的链接问题仍然存在。这使我假设我的 RPATH 设置与我的链接问题无关。
不过,这个帖子的问题已经解决了。关于在 CMakeLists.txt 中正确使用 RPATH 选项的解释仍然非常受欢迎!
关于macos - OS X : MACOSX_RPATH is not specified for the following targets 下的 CMake 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31561309/