如何仅在使用CMake的Linux版本上使用特定于Linux的API和库?

如何仅在使用CMake的Linux版本上使用特定于Linux的API和库?,第1张

概述我有一个项目,我在 Linux(主要)上运行,但有时在Darwin / Mac OS X上运行.我使用CMake在Linux上生成Makefile,在Mac OS X上生成Xcode项目.到目前为止,这一点运行良好. 现在我想使用一些特定于Linux的函数(clock_gettime()和相关函数).当我尝试使用clock_gettime()时,我在Mac OS X上遇到链接器错误,因此我认为它仅 我有一个项目,我在 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和库的正确方法.

解决方法 从您的示例中抽象出来,并回答这个问题:

How to use linux-specific APIs and librarIEs only on linux builds with
CMake?

CMake提供了numerous useful constants,您可以检查以确定您正在运行的系统:

if (${UNIX})  # *nix-specific includes or actionselsif (${WIN32})  # windows-specific includes or actionselsif (${APPLE})  # ...endif (${UNIX})
总结

以上是内存溢出为你收集整理的如何仅在使用CMake的Linux版本上使用特定于Linux的API和库?全部内容,希望文章能够帮你解决如何仅在使用CMake的Linux版本上使用特定于Linux的API和库?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1028246.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存