如何仅在使用CMake的Linux版本上使用特定于Linux的API和库?
我有一个项目,我在
Linux(主要)上运行,但有时在Darwin / Mac OS X上运行.我使用CMake在Linux上生成Makefile,在Mac OS X上生成Xcode项目.到目前为止,这一点运行良好.
现在我想使用一些特定于Linux的函数(clock_gettime()和相关函数).当我尝试使用clock_gettime()时,我在Mac OS X上遇到链接器错误,因此我认为它仅在Linux上可用.我准备在.c文件中引入有条件编译的代码,以便在Linux上使用clock_gettime(),在Mac OS上使用普通的旧时钟(). (顺便说一句,我打算使用#include< unistd.h>和#if _POSIX_TIMERS> 0作为预处理程序表达式,除非有人有更好的选择.) 当谈到CMakeLists.txt文件时,事情变得棘手.仅在跨平台CMake项目中的Linux构建下引入与特定于Linux的API的链接的首选方法是什么? 注意:此问题的早期版本包含对glibc的引用,这些内容过于具体且令人困惑.问题实际上是在跨平台CMake项目中使用特定于Linux的API和库的正确方法. 解决方法
从您的示例中抽象出来,并回答这个问题:
CMake提供了numerous useful constants,您可以检查以确定您正在运行的系统: if (${UNIX}) # *nix-specific includes or actions elsif (${WIN32}) # Windows-specific includes or actions elsif (${APPLE}) # ... endif (${UNIX}) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |