【发布时间】:2017-08-30 00:12:58
【问题描述】:
假设我想使用特定的 Linux / POSIX 功能,该功能基于feature test macros 有条件地提供。例如类型cpu_set_t、宏CPU_SET_ZERO、函数sched_setaffinity。
理想情况下,我只想告诉 CMake 我需要这些,并且它应该找出要设置的额外功能测试宏,或者如果当前系统上无法提供它,它会失败并显示一个很好的错误消息。这可能吗?
我知道我可以在themanpages 中查找并手动使用add_definitions(-D_GNU_SOURCE),但是一旦组合了在不同版本的 POSIX 标准中引入和弃用的多个功能,这可能会变得乏味。根据我的经验,在不同版本的 glibc 实现之间保持可移植性会变得很困难。
有CMake platform checks,但它们似乎只有助于检查。所以我在cmake 而不是make 期间得到了错误,但我仍然需要手动找出正确的功能测试宏。
cmake-compile-features 似乎只提供与编译器直接相关的功能,而不是库。
【问题讨论】:
标签: linux cmake posix glibc portability