macos - OS X : MACOSX_RPATH is not specified for t

我尝试在 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/

相关文章:

c++ - 当 CMake 中的生成器或输入发生更改时,如何仅构建自动生成的代码?

android - 运行 Android Studio gradle build 时如何使用所有 C

android - 在 Gradle 产品 flavor 上调试签名配置

c++ - 关于如何部署 C++ 代码以在任何地方工作的提示

Android NDK - 使两个 native 共享库相互调用

ios - 使用 iOS 构建主机时 Xamarin 实际在做什么?

java - 多个存储库的 Maven 设置

build - 递归 CMake 搜索头文件和源文件

c - 如何编译 GnuTLS

c++ - C++ 依赖生产没有自动化的理论原因是什么?