【发布时间】:2016-06-17 12:00:44
【问题描述】:
我们的项目有一个CMakeList.txt,但它不是我们的主要构建系统。在 Mac OS X 上,使用 Cmake generates a warning(这里没有新内容):
MACOSX_RPATH is not specified for the following targets...
引用的问题/答案说明使用set(CMAKE_MACOSX_RPATH 0) 或set(CMAKE_MACOSX_RPATH 1)。我们的问题是,the feature is too new 它破坏了现有的 Cmake 安装,就像在 Ubuntu LTS 或 CentOS 上发现的那样。我们需要保护它在 Cmake >= 2.8.12 时的使用,但是blog post 没有讨论如何去做。
搜索没有产生有用的结果:how to guard cmake directive。我无法找到相关结果可能是由于我对 Cmake 缺乏经验(其他人应该维护它)。
我们如何保护set(CMAKE_MACOSX_RPATH 0)或set(CMAKE_MACOSX_RPATH 1)?
请注意,我不是在寻找cmake_minimum_required(VERSION 2.8.5 FATAL_ERROR)。我能说的最好的一点是它不会做任何该死的事情。通过测试,我们知道它不会拒绝 target_include_directories,即使 target_include_directories 不满足最低要求并导致 Ubuntu LTS 等低级客户端出现故障。
我认为我正在寻找更接近 C 预处理器宏:
#define 2_8_12 ...
#if CMAKE_VERSION >= 2_8_12
set(CMAKE_MACOSX_RPATH 0)
#endif
【问题讨论】:
标签: cmake versioning